我想知道处理这种情况的最佳方法是什么
class Person(var name:String? = null, var age:Int? = null){
fun test(){
if(name != null && age != null)
doSth(name, age) //smart cast imposible
}
fun doSth (someValue:String, someValue2:Int){
}
}
Run Code Online (Sandbox Code Playgroud)
调用doSth方法并确保名称和年龄为nt null的最简单方法是什么?
我正在寻找一些简单的东西,就像一个变量场景我只想使用let
name?.let{ doSth(it) }
Run Code Online (Sandbox Code Playgroud)
您可以let
尽可能多地嵌套:
fun test(){
name?.let { name ->
age?.let { age ->
doSth(name, age) //smart cast imposible
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一种可能更容易理解的方法是使用局部变量:
fun test(){
val name = name
val age = age
if(name != null && age != null){
doSth(name, age)
}
}
Run Code Online (Sandbox Code Playgroud)
最后但同样重要的是,考虑Person
改为不可变,如下:
data class Person(val name:String? = null, val age:Int? = null){
fun test(){
if(name != null && age != null){
doSth(name, age)
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5897 次 |
最近记录: |