package yamin
typealias Foo = () -> Unit
fun main() {
bar {
baz()
}
}
fun bar(foo: Foo) {
foo()
}
context(Foo)
fun baz() {
//
}
我试图对函数的上下文使用lambda类型,这在这一点上似乎没有问题,但当我试图在该上下文中调用该函数时,或者至少在我认为是该上下文的上下文中,我失败了,而Kotlin的编译器向我显示了baz()
的错误:
No required context receiver found: Cxt { context((yamin.Foo /* = () -> kotlin.Unit */)) public fun baz(): kotlin.Unit defined in yamin in file Main.kt[SimpleFunctionDescriptorImpl@7b5e305f] }
也许我误解了Kotlin的上下文接收器,或者我期待的东西不是为它设计的.我只想创建一个只能在特定上下文中调用的函数,在本例中只能在特定的lambda中调用.