パラメータを取ってラムダを返すKotlin関数を記述しようとしています。私はこれを行うには、次のようなコードを使用しようとしています:インラインラムダを返そうとするときにKotlinは "期待されたパラメータがありません"
fun <T> makeFunc() : (T.() -> Unit) {
return { t: T ->
print("Foo")
}
}
注:実際のプログラムでは、機能が複雑で、t
を使用しています。
Kotlinはこれを無効として拒否し、t: T
に 'パラメータが必要ありません'というエラーを返します。
はしかし、変数にこのラムダを割り当てるには、最初に拒否されていないと正常に動作します:
fun <T> makeFunc() : (T.() -> Unit) {
val x = { t: T ->
print("Foo")
}
return x
}
これら二つのスニペットは同じように見えるので、なぜこのような場合は? return
ステートメントがラムダ以外のものとして解釈された後の中括弧はありますか?
また、IntelliJは変数の値がインライン化できると伝えますが、これはエラーを引き起こすようです。