???
val a: Int?
val b: Int?
val c = a?.let { a ->
b?.let { foo(a, it)) }
}
Есть ли более простой, красивый или идеоматичный способ сделать это?
val c = if (a != null && b != null) { foo(a, b) } else { null } Не обмазываться вложенными let - это всегда просто и красиво
Arrow.core.option и монада
когда будут контракты можно будет делать if(notNull(a,b,c,d,...))
fun <P1, P2, R> let2(p1: P1?, p2: P2?, block: (Pair<P1, P2>) -> R): R? { return p1?.let { v1 -> p2?.let { v2 -> block(v1 to v2) } } }
Обсуждают сегодня