169 похожих чатов

Всем привет. вопрос по котлину: расширенные функции котлина такие как

with() и apply(). Прочитал что они действуют одинаково выполняют множественное операций над одним и тем же объектом, но apply() еще возвращает этот объект. Объясните, вот пример из интернета:
val button = findViewById<Button>(R.id.button)
button.text = "I am a button"
button.textSize =18.0F
button.setBackgroundColor(Color.RED)

Давайте применим with():
val button = findViewById<Button>(R.id.button)
with(button){
text = "I am a button"
textSize = 18.0F
setBackgroundColor(Color.RED)
}

Давайте применим apply():
val button = findViewById<Button>(R.id.button)
button.apply{
text = "I am a button"
textSize = 18.0F
setBackgroundColor(Color.RED)
}

В чем тут разница?

5 ответов

14 просмотров

Разница в семантике как по мне, apply чаще всего используется для заполнения полей объекта/донастройкой объекта. А with скорее нужен, когда нам нужно вызвать кучу полей из объекта и передать их куда-то. А вообще в доках все объясняют

Andrey-༺ShkodeR༻ Автор вопроса
Кирилл
Разница в семантике как по мне, apply чаще всего и...

доки? вот и изучаю, так бы не задавал этот вопрос. на счет вашей семантики в подсознании не убежден, т.к. написанная реализация не удовлетворяет данным критериям в условности. вопрос остается открытым пока не появится более подробнее реализация раскрывающая всю суть данных расширений. ваш ответ учту не принимая близко к точности информации. но всеравно благодарствую.

Разницы между with и apply две. Первая. как вы верно заметили, способ вызова (экстеншн против передачи параметром), вторая — результат (возврат ресивера против возврата из лямбды). Кроме apply есть ещё run, который даже по результату совпадает, и отличается только способом вызова. А про доку — это сюда: https://kotlinlang.org/docs/scope-functions.html

Andrey-༺ShkodeR༻ Автор вопроса
Andrew Mikhaylov
Разницы между with и apply две. Первая. как вы вер...

еще раз повторюсь зная бы что то из интернета не задавал таких вопросов тут.

Andrey ༺ShkodeR༻
еще раз повторюсь зная бы что то из интернета не з...

Тащемта да, ссылку на доку я закинул ровно потому, что там есть по предложению, когда какую функцию применять. Тут действительно часто речь о конвенции, так как в принципе все пять функций спокойно можно заменить одной.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта