2019-12-02:Kotlin中该如何安全地处理可空类型?
Moosphan opened this issue · 7 comments
Moosphan commented
2019-12-02:Kotlin中该如何安全地处理可空类型?
Jsondx commented
a?.let{
}
gabyallen commented
not know
cyixlq commented
对于方法传入的参数直接通过if判断,例如:
fun a(tag: String?, type: String) {
if (tag != null && type != null){
// do something
}
}
还有就是
a?.let{}
a?.also{}
a?.run{}
a?.apply{}
然后接着有一个疑问,假如同时判断两个变量,写成:
a?.let{
b?.let{
//do something
}
}
这样似乎有点不够优雅,想看看大家有什么优雅的写法
fansangg commented
对于方法传入的参数直接通过if判断,例如:
fun a(tag: String?, type: String) { if (tag != null && type != null){ // do something } }
还有就是
a?.let{} a?.also{} a?.run{} a?.apply{}
然后接着有一个疑问,假如同时判断两个变量,写成:
a?.let{ b?.let{ //do something } }
这样似乎有点不够优雅,想看看大家有什么优雅的写法
takeif
feelschaotic commented
补充一点,尽量不要出现空,也就不需要处理空,参考 Java 的空对象模式
lyx0224 commented
对于方法传入的参数直接通过if判断,例如:
fun a(tag: String?, type: String) { if (tag != null && type != null){ // do something } }
还有就是
a?.let{} a?.also{} a?.run{} a?.apply{}
然后接着有一个疑问,假如同时判断两个变量,写成:
a?.let{ b?.let{ //do something } }
这样似乎有点不够优雅,想看看大家有什么优雅的写法
takeif
这样写比较优雅了
fun <T1, T2> ifNotNull(value1: T1?, value2: T2?, bothNotNull: (T1, T2) -> (Unit)) {
if (value1 != null && value2 != null) {
bothNotNull(value1, value2)
}
}