@kotlin_lang

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

Михаил
25.05.2017
13:04:17
Мутабельный lateinit - не православно как кто ?
лейтинит не мжет быть имутабельным)

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

Руслан
25.05.2017
13:05:24
лейтинит не мжет быть имутабельным)
может, просто пользуйтесь Kotlin-M13

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
лейтинит не мжет быть имутабельным)
Тем более ? (смысл был что мутабельный, а ещё и lateinit который не поверишь, в отличие от T?)

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

Михаил
25.05.2017
13:10:36
Тем более ? (смысл был что мутабельный, а ещё и lateinit который не поверишь, в отличие от T?)
ну а зачем его проверять) лейтинит только ради того юзаю чтоб не писать везде вопросики

Михаил
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
а вот T? ты еще и не сразу догадаешься почему у тебя что-то не работает
Ну лично я за val. В случае с findById можно хоть сделать val view by lazy { find... }

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

а с фрагментами как быть?)

Михаил
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
Android extension,если речь идёт про активити/фрагменты/вьюхи
по поводу андроид экстеншенов. Я про них слышал, но не трогал (да как и контлин то в общем). Я правльно понимаю что это просто набор экстеншн функций для activity и fragment. Которые впринципе можно и самому написать...?

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: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'ами

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

Только что посмотрел - и правда есть

Юра
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
? animufag ?
25.05.2017
14:52:50
ого. вот это скрытый потенциал у енума.

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

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

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
ну так речь идет про то,что вы это дерьмо гоняете как филд класса

и тогда это реально дерьмо

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