我很新,Kotlin
我正在尝试弄清楚 Kotlin 的scope functions
.
我的代码如下所示:
with(something) {
when {
equals("test") -> var1 = "test123"
startsWith("test2") -> var2 = "test456"
contains("test3") -> myNullableVar?.let { it.var3 = "test789" }
}
}
.let
因此,在我使用函数进入第三次检查之前,我的with
函数不需要详尽(我没有返回任何东西,我只是在做作业)。在我的第三次检查中,我将.let
其用作空检查...但仅用于分配it.var3
(如果不是null
)。.let
当我知道 Kotlin 的函数按标准返回正文的结果时,我不需要返回任何内容。
尽管如此,现在我with/when
需要详尽无遗,否则它将不再编译。
这让我思考并尝试不同的事情。我找到了解决这个问题的这些方法:
- 我可以在
else
my中添加一个,with/when
所以它变得详尽,但实际上我不需要 else,我不想在这种情况下使用它。 - 我可以添加另一个
.let
,所以它看起来像这样:myNullableVar?.let { it.var3 = "test789" }.let{}
.... 但这对我来说看起来有点 hacky。它应该像这样工作吗? - 使用
If(xy==null){...}else{...}
东西,但我认为我可以用 Kotlin 以不同的方式解决这个问题
因为我是 Kotlin 的新手,所以我不确定如何正确处理这种情况。我可能会选择我的第二个想法,因为“它有效”。还是我不应该.let
用于空检查?添加另一个空的 . let{}
? 还是我根本没有得到零安全概念?我觉得这里有点失落。谢谢你的帮助。