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 была встроена в функцию, возможно,