ANDROID_LIVE Telegram 509
​​Немного про let
#kotlin #article

Во вчерашнем посте был первый совет с использованием let для проверки переменной на null. @atlantik_hak подкинул годную статью, где описываются примеры, когда не стоит использовать let для этих целей, а когда let — самое лучшее решение для проверки.

Итак, когда лучше не использовать let:

для проверки на null immutable переменной. Хотя и запись a?.let { foo(a) } получается довольно изящной, она генерирует лишнюю переменную в байткоде, в отличии от аналога if not null. Врядли вы заметите огромную разницу, но если можно избежать создания лишней переменной, то почему бы этого не сделать.

если вы хотите использовать переменную только внутри let. Чаще всего мы делаем проверку именно для того, чтобы использовать её внутри блока. Например, мы хотим что-то сделать с webView:
webviewSetting?.let {
it.javaScriptEnabled = true
it.databaseEnabled = true
}


вместо этого можно использовать функцию run
webviewSetting?.run {
javaScriptEnabled = true
databaseEnabled = true
}

который уберёт лишние it.

если хотите передать переменную дальше по цепочке. Например, если вы хотите указать размер списка, если он не null, а дальше что-то продолжить делать с ним. Альтернативным решением будет использование also, хотя это тоже не идеальное решение.

Когда же тогда использовать let?
🟢 для проверки на null mutable переменной. Тут хорошо подходит let, так как он избавляет нас от дополнительного ? при взаимодействии с переменной.
private var str: String? = null

fun process() {
str?.let { /*Do something*/ }
}


🟢 если хотите использовать переменную снаружи от let. Например, если вы хотите проициализировать другие переменные тем классом, что был у вас:
var javaScriptEnabled = false
var databaseEnabled = false

webviewSetting?.let {
javaScriptEnabled = it.javaScriptEnabled
databaseEnabled = it.databaseEnabled
}


Это удобнее для review кода, чем функция run.

🟢 когда у вас есть проверка из цепочки `?`. Например:
return string?.asIterable()?.distinct()?.sorted()
генерирует больше байткода, чем:
return string?.let {
it.asIterable().distinct().sorted()
}


Спасибо подписчикам, которые дают обратную связь по постам ✌️.
И уверен, что теперь вы будете использовать let аккуратнее.



tgoop.com/android_live/509
Create:
Last Update:

​​Немного про let
#kotlin #article

Во вчерашнем посте был первый совет с использованием let для проверки переменной на null. @atlantik_hak подкинул годную статью, где описываются примеры, когда не стоит использовать let для этих целей, а когда let — самое лучшее решение для проверки.

Итак, когда лучше не использовать let:

для проверки на null immutable переменной. Хотя и запись a?.let { foo(a) } получается довольно изящной, она генерирует лишнюю переменную в байткоде, в отличии от аналога if not null. Врядли вы заметите огромную разницу, но если можно избежать создания лишней переменной, то почему бы этого не сделать.

если вы хотите использовать переменную только внутри let. Чаще всего мы делаем проверку именно для того, чтобы использовать её внутри блока. Например, мы хотим что-то сделать с webView:
webviewSetting?.let {
it.javaScriptEnabled = true
it.databaseEnabled = true
}


вместо этого можно использовать функцию run
webviewSetting?.run {
javaScriptEnabled = true
databaseEnabled = true
}

который уберёт лишние it.

если хотите передать переменную дальше по цепочке. Например, если вы хотите указать размер списка, если он не null, а дальше что-то продолжить делать с ним. Альтернативным решением будет использование also, хотя это тоже не идеальное решение.

Когда же тогда использовать let?
🟢 для проверки на null mutable переменной. Тут хорошо подходит let, так как он избавляет нас от дополнительного ? при взаимодействии с переменной.
private var str: String? = null

fun process() {
str?.let { /*Do something*/ }
}


🟢 если хотите использовать переменную снаружи от let. Например, если вы хотите проициализировать другие переменные тем классом, что был у вас:
var javaScriptEnabled = false
var databaseEnabled = false

webviewSetting?.let {
javaScriptEnabled = it.javaScriptEnabled
databaseEnabled = it.databaseEnabled
}


Это удобнее для review кода, чем функция run.

🟢 когда у вас есть проверка из цепочки `?`. Например:
return string?.asIterable()?.distinct()?.sorted()
генерирует больше байткода, чем:
return string?.let {
it.asIterable().distinct().sorted()
}


Спасибо подписчикам, которые дают обратную связь по постам ✌️.
И уверен, что теперь вы будете использовать let аккуратнее.

BY Android Live 🤖




Share with your friend now:
tgoop.com/android_live/509

View MORE
Open in Telegram


Telegram News

Date: |

But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered." To edit your name or bio, click the Menu icon and select “Manage Channel.” The visual aspect of channels is very critical. In fact, design is the first thing that a potential subscriber pays attention to, even though unconsciously. More>> 3How to create a Telegram channel?
from us


Telegram Android Live 🤖
FROM American