在猫王操作员中包含日志记录?

据我所知,使用elvis操作符的唯一方法是使用这样的语法:

foo = bar ?: return 

我很好奇,如果有人提出了一种方法来包括日志记录,一般来说,当事情不符合预期的时候,会使用回报(至少在我的经验中)。

但是,以下语法无效:

 foo = bar ?: { Log.e(TAG, "Some error occurred.") return } 

当然,我可以简单地做下面的事情,

 foo = bar if (foo == null) { Log.e(TAG, "Some error occurred.") return } 

但是有没有包括与猫王操作员一起登录的方法?

只需使用kotlin-stdlibrun { ... }函数,该函数运行传递的lambda:

 foo = bar ?: run { Log.e(TAG, "Some error occurred.") return } 

{}是一个lambda,你应该调用它,例如:

 // v--- it is a lambda foo = bar ?: return { Log.e(TAG, "Some error occurred.") }() // <--- invoke the lambda 

let调用lambda:

 foo = bar ?: return let{ Log.e(TAG, "Some error occurred.") } 

哦,你所要做的就是这样:

 foo = bar ?: kotlin.run { Log.e(TAG, "Some error occurred.") return } 

这可能是可以说是不太可读的标准,如果空检查,但嘿,至少在这里是如何做到这一点。