【发布时间】:2020-05-12 05:15:45
【问题描述】:
我有下一个枚举声明:
enum class Foo(val f: (String) -> String)
还有下一个正文:
BAR({obj -> obj.toString()}),
FOO({obj -> obj.toString()})
...
我可以以某种方式定义函数以供参考吗?像这样的:
private val predicate: (String) -> String = {obj -> obj.toString()}
以及下一个用法:
FOO(::predicate)
此代码根本无法编译 (Unresolved reference: predicate)。
更新:
我刚刚创建了伴生对象:
companion object Predicate {
private fun predicate(): (String) -> String {
return {obj -> obj.toString()}
}
}
然后我的 IDE 建议我使用另一种类型 KFunction0<(String) -> String>。但是我可以在这里使用函数作为参数吗?
【问题讨论】:
-
我无法重现该问题,它对我来说很好。您有权访问私有财产吗?可能这就是问题所在!
-
@AnimeshSahu pl.kotl.in/16RBfHSJJ
标签: kotlin functional-programming jvm