How can I get the "owner" of a method?
Ali Çehreli
acehreli at yahoo.com
Sat Oct 1 01:18:38 UTC 2022
On 9/30/22 14:11, solidstate1991 wrote:
> extern (C) public int registerDDelegate(alias Func,
That can be a lambda that takes ClassType. I wrote the following along
with place holder as I assumed them to be:
class C {
string s;
void foo() {
import std.stdio : writeln;
writeln("Look ma: It was ", s, " but I am using it in D!");
}
}
auto luaGetFromIndex(C)() {
auto c = new C();
c.s = "created in Lua";
return c;
}
extern (C)
int registerDDelegate(alias Func)() {
import std.traits : Parameters;
alias ClassType = Parameters!Func[0];
auto c = luaGetFromIndex!ClassType();
Func(c);
return 0;
}
void main() {
// Here: The lambda takes a C:
registerDDelegate!((C c) => c.foo);
}
Ali
More information about the Digitalmars-d-learn
mailing list