使用imgui port,我总是使用原始数组来模拟c ++指针/地址传递。
例如:
checkbox("Anti-aliased lines", bool.apply { set(0, style.antiAliasedLines) })
style.antiAliasedLines = bool[0]
其中bool: BooleanArray
我刚刚探索了直接传递字段的可能性,类似于c ++:
ImGui::Checkbox("Anti-aliased lines", &style.AntiAliasedLines);
kotlin:
checkbox("Anti-aliased lines", style::antiAliasedLines })
我只需要在KMutableProperty0<Boolean>
上容纳相应的checkbox()
,我也会仔细检查以便在同一个函数中设置该字段:有一个get(): Boolean
和一个set(Boolean)
我担心的是:
这对java有用吗?
如果我沿着这条路走下去,我应该注意哪些禁忌症吗?如表演还是其他什么?
因为我觉得因为这种做法有点笨拙和肮脏
答案 0 :(得分:2)
这对java有用吗?
一件不起作用的是引用Kotlin用于表示Java getter和setter的合成属性,例如: getFoo
+ setFoo
→foo
(并且您不能使用绑定的可调用引用bar::foo
)。目前不支持此功能。
您可以尝试通过自定义KMutableProperty0
实现来解决这个问题,该实现接受对Bar::getFoo
,Bar::setFoo
和bar
的未绑定可调用引用,并在某种意义上充当属性引用获得和设定其价值。
如果我沿着这条路走下去,我应该注意哪些禁忌症吗?如表演还是其他什么?
绑定的可调用引用包含对接收者的引用,因此style::antiAliasedLines
将保留style
来自GC,并且您必须小心存储哪些可调用引用。