![]() |
1
3
你会用
在我看来,Lua应该对这种类型的扩展给予更多的支持。到目前为止,Lua/C(++)包装系统确实有责任这样做。
在我最近做的一个包装中(作为商业项目的一部分),我做了
Lua可以帮助所有这一切的方法是,如果元表有一个扩展类型信息的标准字段(S.A.
|
![]() |
2
5
您可以始终在元表中存储一个标记字段,该字段具有模块独有的light userdata值。
然后你可以用
通过这种方式,“口味”字段只能接受在范围内具有“绿色口味”符号的模块中的代码可以创建的值,查找字段并测试其值只需要一个表查找,而不需要检索元表本身。注意,变量green_flavor的值并不重要,因为实际上只使用了它的地址。 有了几个不同的口味变量可用作句子值,可以使用_flavor字段来区分几个相关的元表。 所有这些都表明,一个自然的问题是“为什么要这样做?”毕竟,元表可以轻松地包含获得适当行为所需的所有信息。它可以很容易地保存函数和数据,并且可以从C和Lua中检索和调用这些函数。 |
![]() |
3
2
用户数据必须有一个元表,所以抓住它,然后在注册表中查找您想要的名称。如果这两个对象相同,您就找到了要查找的类型。
您可以在C代码中调度此类型,但请允许我建议您改为指定元表的字段。存储在元表中的函数应该执行该操作,但如果不执行,则必须执行
然后在你的C代码中
|
![]() |
4
0
我刚刚查看了
|
![]() |
Terio · Typescript:使用变量的值创建自定义类型 2 年前 |
![]() |
Kareem Adel · 创建函数类型(TypeScript接口) 3 年前 |
![]() |
MatÄj VondráÄek · 如何在c#方法中传递类型? 3 年前 |
![]() |
kreo · 为什么&[T]参数也接受&Vec? 7 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 7 年前 |