Kotlin С Если Не Null

какой был бы самый краткий способ использования with iff a var не null?

лучшее, что я мог придумать:

arg?.let { with(it) {

}}

2 ответов


вы можете использовать функции расширения Kotlin apply() или run() в зависимости от того, хотите ли вы, чтобы это было свободно (возвращение this в конце) или преобразование ( возврат нового значения в конце):

использование apply:

something?.apply {
    // this is now the non-null arg
} 

и беглый пример:

user?.apply {
   name = "Fred"
   age = 31
}?.updateUserInfo()

преобразование примера с помощью run:

val companyName = user?.run {
   saveUser()
   fetchUserCompany()
}?.name ?: "unknown company"

альтернативно, если вам не нравится это именование и действительно нужна функция под названием with() вы можете легко создать свою собственную многоразовую функцию:

// returning the same value fluently
inline fun <T: Any> T.with(func: T.() -> Unit): T = this.apply(func)
// or returning a new value
inline fun <T: Any, R: Any> T.with(func: T.() -> R): R = this.func()

пример использования:

something?.with {
    // this is now the non-null arg
}

если вы хотите, чтобы проверка null была встроена в функцию, возможно,


похоже, альтернативой этому было бы использовать:

arg?.run {

}