@kotlin_lang

Страница 803 из 982
Quantum Harmonizer
10.08.2018
14:56:17
локальную пропустит)

Костя
10.08.2018
14:56:31
только lateinit можно не инциализировать

I
10.08.2018
14:56:37
Явное лучше неявного. Хочешь нулл — напиши его.
Так это лишний код, ведь котлин создан, чтобы его уменьшить и логично присваивать null если нет явного

Костя
10.08.2018
14:56:40
но lateinit нельзя к примитивным типам

Google
Quantum Harmonizer
10.08.2018
14:57:01
I
10.08.2018
14:57:02
значения задать надо же ещё
Так я об этом и спросил, зачем

Костя
10.08.2018
14:57:10
неявности мало

Quantum Harmonizer
10.08.2018
14:57:29
котлин создан не для того чтобы уменьшить количество кода
...а чтобы повысить эффективность разработки, во всех смыслах, включая более строгую систему типов

Костя
10.08.2018
14:57:42
а вот почему lateinit нельзя для примитивных типо, это хороший вопрос к гуру )

Dmitry
10.08.2018
14:57:53
Так это лишний код, ведь котлин создан, чтобы его уменьшить и логично присваивать null если нет явного
Это тебе в руби. У котлина нет задачи любой ценой уменьшить обьем кода.

Костя
10.08.2018
14:58:37
I
10.08.2018
14:58:38
все не-lateinit проперти должны быть инициализированы
Странно не видел в доках где это написано

Костя
10.08.2018
14:58:39
внутри

Quantum Harmonizer
10.08.2018
14:58:42
а вот почему lateinit нельзя для примитивных типо, это хороший вопрос к гуру )
потому что нет явного и хорошего способа сделать примитив нуллабельным

Google
Костя
10.08.2018
14:59:38
просто убрано как в java что были типы объектные и примитивные, сделаны чисто объектные все, но те которые внутри юзают примитив должны быть всегда объеявлены

Quantum Harmonizer
10.08.2018
14:59:41
Я солидарен с разработчиками языка: дефолтных значений быть не должно.

Bogdan
10.08.2018
14:59:51
Костя
10.08.2018
15:00:37
Quantum Harmonizer
10.08.2018
15:02:10
Костя
10.08.2018
15:03:00
и будет боксинг
типо когда null это Integer объектный, а когда значение то уже int ?

то есть на лету менятся будет тип

Vladimir
10.08.2018
15:03:09
а вот почему lateinit нельзя для примитивных типо, это хороший вопрос к гуру )
Потому, что lateinit работает через null, чтобы определить, что свойство не инициализировано

Anton
10.08.2018
15:03:48
а почему не забоксить если lateinit модификатор стоит

Bogdan
10.08.2018
15:04:04
боксинг, анбоксинг

Костя
10.08.2018
15:04:21
а в чём боксинг тогда

с nullable Int

Anton
10.08.2018
15:04:54
в том что он оборачивается и становится null

I
10.08.2018
15:04:57
Так что все-таки null или 0?

Bogdan
10.08.2018
15:05:12
с nullable Int
если обычный Int компилятор может подставить джавовский int примитив, с нулаблом уже будет объект

Костя
10.08.2018
15:05:24
а

Bogdan
10.08.2018
15:05:29
Так что все-таки null или 0?
вот компилятор сам не знает

Костя
10.08.2018
15:05:30
оу

Google
Bogdan
10.08.2018
15:06:33
Костя
10.08.2018
15:06:43
не, про Котлин же

Vladimir
10.08.2018
15:06:47
а почему не забоксить если lateinit модификатор стоит
Вот почему не сделали неявно такое, не знаю

Anton
10.08.2018
15:07:05
кажется удобно было бы)

Vladimir
10.08.2018
15:07:46
кажется удобно было бы)
Это всегда можно добавить. А вот вырезать было бы нельзя. Подстраховались, наверное.

Костя
10.08.2018
15:07:54
ну то есть я пишу lateinit var asd: Int(?) и оно понимает например само что это Integer

ну то есть я не вижу разницы с простыми объектами

т.к. int может быть объектным тоже же

Integer

Anton
10.08.2018
15:08:28
ну да

I
10.08.2018
15:09:53
Так какой вывод? Какая правильная начальная инициализация для Int? ?

Bogdan
10.08.2018
15:10:03
ну то есть я пишу lateinit var asd: Int(?) и оно понимает например само что это Integer
совет, возми котлин + idea, ctrl + Shift + A, Sow kotin Bytecode, потом можно Decompile Java

Костя
10.08.2018
15:10:03
какую задашь сам

Костя
10.08.2018
15:10:20
или студию можно так тоже ?

Bogdan
10.08.2018
15:10:37
идеи нет (
есть проги декомпилируют

I
10.08.2018
15:10:43
какую задашь сам
Плохо, не должно быть вариаций как мне кажется

Bogdan
10.08.2018
15:10:48
или студию можно так тоже ?
вро де, это по сути идея

Google
Костя
10.08.2018
15:11:04
Bogdan
10.08.2018
15:11:05
хотя не в последней версии котлина накосячили (1.3 вроде)

Костя
10.08.2018
15:11:10
ты можешь его задать как null

может как объект

вариации

Bogdan
10.08.2018
15:11:34
I
10.08.2018
15:13:19
всм ? поставь null и не задалбуй
Так вот если бы они оставили неявную инициализацию как в джава было бы точнее, я посмотрел блю принты гугла они вообще стараются юзать lateinit

Bogdan
10.08.2018
15:13:50
Так вот если бы они оставили неявную инициализацию как в джава было бы точнее, я посмотрел блю принты гугла они вообще стараются юзать lateinit
пойми в джаве можно было не иницилизировать вообще, котлин же должен гарантировать инцилизацию, и делать разное поведение для Int и Int?, имхо, еще глупей и нелогичней

Admin
ERROR: S client not available

Bogdan
10.08.2018
15:17:28
Чагоооо, java сама в любом случае инициализирует все поля
я имею ввиду реальными значениями, а не нулами

dimiii
10.08.2018
15:18:54
lateinit var asd: Int = 42 Все спокойны?

dimiii
10.08.2018
15:19:32
На крайняк можно смазать синтаксическим сиропом lateinit var asd: Int with default 42

Bogdan
10.08.2018
15:20:11
lateinit var asd: Int = 42 Все спокойны?
мы про обычные переменные

Google
dimiii
10.08.2018
15:20:29
при чём тут lateinit тогда?
а суть в том, что чем страдать и выдумывать чем же проинициализиовать или делать боксинг /анбоксинг - взять и проинициалировать чем-то

dimiii
10.08.2018
15:21:01
есс-но lateinit не нужен - это я для усиления драмы оставил

Костя
10.08.2018
15:21:06
так оно не работает с lateinit

как раз про то и разговор же

что нужно убирать lateinit и инициализировать

dimiii
10.08.2018
15:21:39
аминь

Глеб
10.08.2018
15:47:02
Подскажите, пожалуйста, могу ли я проверить, что у меня generic является nullable? Псевдокод того, что я хочу: https://gist.github.com/78cca544e359e0755bb69a751a48bd67.git

Bogdan
10.08.2018
15:49:24
дженерикк стирается в рантайме

может вам нужно проверит переменую типа T ?

Глеб
10.08.2018
15:56:08
Наверное, я просто запутался. Попробую еще подумать, спасибо

Bogdan
10.08.2018
16:07:13
Наверное, я просто запутался. Попробую еще подумать, спасибо
дженерик нужен что-бы "не уточнать" тип во время написания класса, class Test<T>(val t: T)

val test = Test(10) val i = test.t * 10 ну тут t кастуется к Int должно работать ?, псевдо код

Глеб
10.08.2018
16:08:47
Это то понятно. Смотрите, что я хочу: я хочу написать универсальный делегат, поддерживающий nullable-типы в зависимости от дефолтного значения: https://gist.github.com/f4db99b75517b9c9170382634942a02c.git

Имею в виду делегат для Android Preferences. И что-то я явно делаю не так

Bogdan
10.08.2018
16:10:55
https://t.me/kotlin_mobile не уверен но может это вопрос лучше туда

Глеб
10.08.2018
16:10:57
Нужно, чтобы в случае, если T является nullable, дефолтное значение было null

Bogdan
10.08.2018
16:11:16
андроид специфичные ввещи

inline fun <reified T>

может это помочь, там ты Т можешь проверить на тип

Страница 803 из 982