[Gambas-user] About call sub from string
Tobias Boege
taboege at gmail.com
Thu Jan 7 13:54:05 CET 2021
On Thu, 07 Jan 2021, Olivier Coquet wrote:
> Hi all,
>
> Is somebody to know if it's possible to call a sub from a stringvar which
> contain the name of the sub ?
>
> I've tryed EVAL but don't work :(
>
> exemple of what I want to do:
>
> public sub main()
>
> Dim mavar as string = "masub()"
>
> eval (mavar,"")
>
> endsub
>
> public sub masub()
>
> endsub
>
Except the built-in functions, Gambas has no free-standing subroutines,
it only has methods. To call them you need some kind of object which
provides a context to the method. Eval does not do that for you.
[ When you call masub() in Gambas code, that code is always in a class
and will always be executed in the context of some object. In that call,
the method name is lexically resolved with respect to the current class
and implicitly called in the context of the current object, aka Me. ]
Once you have the method name mavar and an object x, you can use
Object.Call(x, mavar) ' optional Array of arguments after mavar
Object.Call(Me, mavar) ' if you don't have a specific x, use x = Me
Best,
Tobias
--
"There's an old saying: Don't change anything... ever!" -- Mr. Monk
More information about the User
mailing list