在猫王操作员中包含日志记录?
据我所知,使用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-stdlib
的run { ... }
函数,该函数运行传递的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 }
这可能是可以说是不太可读的标准,如果空检查,但嘿,至少在这里是如何做到这一点。