
Ivan
25.05.2017
13:03:29
Если прям не кайф экстеншены,то ленивый делегейтед проперти

Михаил
25.05.2017
13:04:17

Ivan
25.05.2017
13:04:25
Ибо lateinit нужно использовать только для di в классах фреймворка,где нельзя через конструктор инжектить

Руслан
25.05.2017
13:05:24

Google

Михаил
25.05.2017
13:07:01

Руслан
25.05.2017
13:07:07
https://blog.jetbrains.com/kotlin/2015/09/kotlin-m13-is-out/

Ivan
25.05.2017
13:07:07
Android extension - typesafe из коробки

Руслан
25.05.2017
13:07:29
class Example {
@Inject
lateinit val foo: Foo
@Inject
lateinit var bar: Bar
}
хорошо же было)

Михаил
25.05.2017
13:08:51
да. было бы круто
а почему выпилили?

Igor
25.05.2017
13:09:12

Руслан
25.05.2017
13:09:13
в M14 написано

Михаил
25.05.2017
13:10:36

Igor
25.05.2017
13:11:14

Михаил
25.05.2017
13:11:25
с каким?)

Kylych
25.05.2017
13:11:32
дайте ссылку где все это читать?
то что касается андроида

Google

Sasha
25.05.2017
13:11:50

Михаил
25.05.2017
13:12:12
с каким?)
я думаю что любой здравомыслящий человек сразу поймет что он забыл проинициализировать вью
а вот T? ты еще и не сразу догадаешься почему у тебя что-то не работает
ну это касательно андроид вьюх

Igor
25.05.2017
13:14:56

Михаил
25.05.2017
13:15:13
если вызвать до setContentView в активити например
а с фрагментами как быть?)

Igor
25.05.2017
13:15:48

Михаил
25.05.2017
13:16:20

Igor
25.05.2017
13:25:33
@HeapyHop добавь что ли в описание чата, а то они так и будут... (страдать фигнёй, ведь ⭐️ этого чата все равно не догнать ?)

Руслан
25.05.2017
13:27:04
Можно, тот кто сообщения удалил пусть добавит

Sergey
25.05.2017
13:30:21
вообще поиском по "stats" находится моментально

Nikita
25.05.2017
13:38:47

Руслан
25.05.2017
13:38:57

Михаил
25.05.2017
13:40:22

Igor
25.05.2017
13:40:59

Nikita
25.05.2017
13:41:26

Sasha
25.05.2017
13:45:26
не робит чет балалайка(анко превью).?

Ivan
25.05.2017
13:52:04

Google

Ivan
25.05.2017
13:52:38
Сегодня смотрел байт код который генерится для when и не осилил понять что за гавно там генерится
По факту вытягивается условие в филд на стеке
Все ок
Потом if(var2){ ....} else { if(var2){ throw WhenBlaBlaBlaException() } ... }
И тут как бы вопрос
Нахрена в ветке для false ещё раз проверять это же условие
Ладно это был бы филд класса
Но это переменная вытянутая из when(...)
Если у кого есть идеи буду рад услышать
Ну и если надо могу показать кодом на гисте

Юра
25.05.2017
14:12:41
Что лучше использовать в Kotlin - sealed class или enum class в качестве перечисления? Насколько я знаю, использование Enum в Android не то что бы нежелательно, но вносит некоторое дополнительное количество методов в конечную сборку.

? animufag ?
25.05.2017
14:13:55

? animufag ?
25.05.2017
14:15:42
вообще если нужно чисто енумы то да enum class.
sealed когда что-то вроде adt

Ivan
25.05.2017
14:31:00
если вам нужно просто перечисление типо AccountType { User,Bot }
то енам
если вам нужно филды хранить внутри
то sealed class

Nikita
25.05.2017
14:31:13
может конечно я чего то не знаю

Ivan
25.05.2017
14:31:36
вообще почти всегда можно написать более идеоматиченый код с sealed class'ами

? animufag ?
25.05.2017
14:32:04

Google

Alexander
25.05.2017
14:32:11
ну и там не в методах, а в размере объектов в памяти
+ не занимайтесь преждевременной оптимизацией, в большинстве случаев вы не заметите разницы при использовании IntDef. Оно может быть заметным только в очень незначительном числе кейсов

Admin
ERROR: S client not available

Nikita
25.05.2017
14:34:08
извиняюсь за оффтоп в котлин чате)

Юра
25.05.2017
14:35:40
Мне чисто была интересна внутрення реализация. С использованием Kotlin Bytecode из Android Studio 3.0 я её увидел.
Буду использовать Enum :)

Alexander
25.05.2017
14:36:23
Kotlin Bytecode есть и до 3.0

Юра
25.05.2017
14:38:40
Опа, сюрприз. Первый раз увидел на I/O 2017
Только что посмотрел - и правда есть

? animufag ?
25.05.2017
14:41:34

Юра
25.05.2017
14:42:20
Я тоже их так серьёзно использую.

? animufag ?
25.05.2017
14:42:40
а если в котлине объявить топлевел val то он тоже потокобезопасный синглтон?

Юра
25.05.2017
14:43:43
Нет, тут дело именно в java enum class.

? animufag ?
25.05.2017
14:48:43
а вот допустим джава. делаешь класс с приватным конструктором и полем public static final
ну и там вызываешь этот приватный конструктор. это будет тот самый потокобезопасный синглтон?

Юра
25.05.2017
14:49:18
Это на полном серьёзе вопрос или я чувствую некую издёвку?)

? animufag ?
25.05.2017
14:49:41
хз. ну я бывает туговат

Юра
25.05.2017
14:51:11
В таком случае - нет, это не потокобезопасный синглтон. Помимо синхронизации при создании объекта есть ещё синхронизация при обращении к данным.

? animufag ?
25.05.2017
14:51:15
ну идея такая: обычно синглтоны обладают некоторым lazy свойством. в енумах его вроде бы и нет. всё статично появляется.
ну и я думаю у енума в этом плане есть альтернативы

Google

Nikita
25.05.2017
14:52:24

? animufag ?
25.05.2017
14:52:50
ого. вот это скрытый потенциал у енума.

Ivan
25.05.2017
14:56:59
а ну и да,забыл упомянуть,что если вы юзаете enum как филд вашего data class'а у вас гавнокод :D

Юра
25.05.2017
14:57:43
Почему?

Dmitriy
25.05.2017
15:04:38

Ivan
25.05.2017
15:05:04
ну в большинстве случаев если вы делаете так,то вы гоняете там тип
а можете просто сделать sealed классы для каждого типа
с нужными филдами

Dmitriy
25.05.2017
15:06:21
вы понимаете, когда лучше использовать sealed, а когда enum? или вы всегда sealed?
sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()
здесь в примере используются разные конструкторы, разное количество полей. вообще здесь не целесообразно использовать enum
enum class Direction {
NORTH, SOUTH, WEST, EAST
}
зачем здесь sealed?

Ivan
25.05.2017
15:09:29
ну так речь идет про то,что вы это дерьмо гоняете как филд класса
и тогда это реально дерьмо