我在S.O中看到以下评论。帖子,我很感兴趣:
为什么不使用null进行检查?
a?.let{} ?: run{}
仅在极少数情况下适用,否则就不是惯用语–伏特丹(Voddan)16年5月15日在7:29 best way to null check in kotlin?
为什么该构造“仅在少数情况下适用”?
Kotlin的首席工程师说,
run允许您在Elvis运算符https://stackoverflow.com/a/51241983/6656019
的右侧使用多个语句
尽管我承认实际上并没有认可它是惯用的。这两个职位似乎都是受人尊敬的S.O. Kotlin贡献者。
激发原始评论的帖子提到,如果let
是可变的,则表达式的a
部分非常重要。在这种情况下,您将需要a?.let{} ?: run{}
而不是if{} else {}
。
我发现我喜欢“让Elvis运行”的构造。在大多数情况下应该避免使用它吗?
感谢您的任何见识。
答案 0 :(得分:4)
在这种情况下,您需要一个?.let {}?:run {}而不是if {} else {}
否,您可以省略run { statement }
的运行部分并使用a?.let{} ?: statement
。
在大多数情况下应该避免吗?
您应在需要时使用它。例如。当您想在那种情况下运行多个语句时。需要指出的是,这种情况很少见。通常,您会在elvis运算符的右侧仅看到一条语句。
当然,当您不需要它时也不要使用它。保持代码简单。