eve*_*ian 2 kotlin kotlin-null-safety
我是科特林新手。有人可以告诉我如何在下面的 cade 中仅当不为空时才设置该值。应该有一种方法可以使用 withlet()但我不知道该怎么做。
如果var2不为空,只有我应该设置它。否则会抛出空指针错误。
private fun myFunc(var1: Type1 , var2: Type2?) {
val request = class1.newBuilder()
.setType1(var1)
.setType2(var2) // how to set var2 only if not null?
.build()
clientClass.send(request)
}
Run Code Online (Sandbox Code Playgroud)
如果每个构建器函数返回一个新的构建器实例,请使用run:
private fun myFunc(var1: Type1 , var2: Type2?) {\n val request = class1.newBuilder()\n .setType1(var1)\n .run { if(var2 != null) setType2(var2) else this }\n .build()\n clientClass.send(request)\n}\nRun Code Online (Sandbox Code Playgroud)\n如果构建器函数发生变化并返回相同的构建器实例,则\xe2\x80\x99s更易于使用apply
private fun myFunc(var1: Type1 , var2: Type2?) {\n val request = class1.newBuilder()\n .setType1(var1)\n .apply { if(var2 != null) setType2(var2) }\n .build()\n clientClass.send(request)\n}\n\n// or more cleanly using apply for everything instead of chaining:\n\nprivate fun myFunc(var1: Type1 , var2: Type2?) {\n val request = class1.newBuilder().apply {\n setType1(var1)\n if(var2 != null) setType2(var2)\n build()\n }\n clientClass.send(request)\n}\nRun Code Online (Sandbox Code Playgroud)\n其函数返回新实例的 Builder 类示例:
\nfun setType2(type2: Type2): Builder {\n return CombinedBuilder(this, type2) // a new object\n}\nRun Code Online (Sandbox Code Playgroud)\n其函数返回相同实例的 Builder 类示例:
\nfun setType2(type2: Type2): Builder {\n this.type2 = type2\n return this // the same object\n}\nRun Code Online (Sandbox Code Playgroud)\n第二种比较常见,但有时也使用第一种。您可能需要检查源代码才能确定。如果您不能确定,请使用该.run方法,因为它对任何一个都有效。
| 归档时间: |
|
| 查看次数: |
2296 次 |
| 最近记录: |