4
次のコードが機能しない理由を知っていますか?ラムダと呼ばれるそれはval message = log() { message }
だったかのようにKotlinアンラッピング関数コンパイラエラー
val message = log()
{ message }
このコードは解析されます、つまり、log
:
private fun wrapLogIfNeeded(buildMessageOnCurrentThread: Boolean, log:() -> String):() -> String
return if(buildMessageOnCurrentThread) {
val message = log() // Type mismatch: Required() -> String Found: Unit
{ message }
}
else {
log
}
}
しかし、この処理が行われます。
ための構文あいまいさのためですprivate fun wrapLogIfNeeded(buildMessageOnCurrentThread: Boolean, log:() -> String):() -> String
return if(buildMessageOnCurrentThread) {
val message = lazy { log() }.value
{ message }
}
else {
log
}
}
を、あなたは[匿名関数](httpsで 'ラムダ' {メッセージ}を置き換えることができます。 org/docs/reference/lambdas.html#anonymous-functions): 'fun()= message'です。 – mfulton26