
Anton
10.08.2017
14:27:30
о там тоже теперб будет тайп инференс?

Ilia
10.08.2017
14:28:10
ладно, а есть подводные камни с котлин -> js ?
неочевидные всякие штуки мб

Quantum Harmonizer
10.08.2017
14:31:38

Anton
10.08.2017
14:32:41
при обьявлении переменных

Google

Quantum Harmonizer
10.08.2017
14:33:41

Anton
10.08.2017
14:33:48
http://blog.takipi.com/project-amber-the-future-of-java-exposed/

Quantum Harmonizer
10.08.2017
14:36:24

Anton
10.08.2017
14:36:48
))))))
ну они в отдельном проекте каком то как я понял

Михаил
10.08.2017
14:37:31
в котлине

Anton
10.08.2017
14:37:51
хаха

Strashko
10.08.2017
14:50:07
Всем привет, в android studio 3.0 beta1 нужно использовать kapt или anotationProcessor уже научился работать с котлином и аннотациями?
Народ, помогите, че делать, например с анотациями в новой студии при использовании kotlin(

Eugene
10.08.2017
15:03:31
apply plugin "kotlin-kapt"

Strashko
10.08.2017
15:32:38

Eugene
10.08.2017
15:33:21
покажи как подключаешь

Google

Eugene
10.08.2017
15:33:24
даггер

Strashko
10.08.2017
15:35:53

Evgeniy
10.08.2017
19:04:03
✋

Badya
10.08.2017
19:30:26
Коллеги, а есть ли какой-то оверхед от того что я все функции буду делать suspend, даже если им это и не требуется?

DarkMentat
10.08.2017
19:33:40
зачем??

Badya
10.08.2017
19:43:09
Иинтересно есть ли оверхед, вопроса "зачем" не стоит

Kirill
10.08.2017
19:46:26
Сильно больше байткода будет. По дополнительному классу на каждую функцию.

Михаил
10.08.2017
19:50:07
Ну и вызов тоже дороже будет

Quantum Harmonizer
10.08.2017
19:53:09

Kirill
10.08.2017
20:04:06
Скорей по состоянию у стейт-машины.
на каждую функцию у которой есть suspention points будет генерится класс. Если все функции будут suspend, то они все(почти) будут содержать suspention points. в итоге на каждую функцию будет целый класс, который будет наследником CoroutineImpl


Badya
10.08.2017
20:16:07
Вот хотел плагином и поглядеть но все повисло) обновлюсь. Спасибо!

Михаил
10.08.2017
23:44:43
еее
https://youtrack.jetbrains.com/issue/KT-10542
спустя два года пофиксили :D

Artem
10.08.2017
23:47:30

Pavel
11.08.2017
07:54:12
Как вы на котлине передать тип в gson, если этот тип - дженерик?
Пробую что-то типа object : TypeToken<T>() {}.type Но gson парсит это дело в LinkedTreeMap

Google

Quantum Harmonizer
11.08.2017
08:18:34

Pavel
11.08.2017
08:20:02
Ну вот не работает TypeToken чего-то.
T- нет, не стертый, обычный дженерик.
Вот пример
http://simplecat.tk/shots/shot-170811-112120-873760.png
На 17 строке я пытаюсь получить TypeToken дженерика классическим способом явы. Но он не работает, и gson возвращает LinkedTreeMap. Поэтому мне приходится руками передавать Class<T> чтобы это работало (строка 19)

Quantum Harmonizer
11.08.2017
08:23:42
Ну потому что Т стёртый.
TypeToken не догадывается, каким типом является Т.

Pavel
11.08.2017
08:27:58
А можете объяснить, почему он стирается?

Quantum Harmonizer
11.08.2017
08:31:20

Pavel
11.08.2017
08:32:11
Так. И как в таком случае решить проблему и получить TypeToken?

Quantum Harmonizer
11.08.2017
08:35:50

Anton
11.08.2017
08:36:16
а через reified дженерики не решится?

Dmitry
11.08.2017
09:00:07
так-то решится

Pavel Shackih
11.08.2017
10:31:39
а можете еще раз напомнить почему, если есть nullable проперти в классе то смарткаст не сработает, ругается что мутабельное проперти может измениться на этот момент, но при этом safe call отрабатывает без ошибок? Ведь в обоих случаях в байткоде будет одна и также конструкция

Quantum Harmonizer
11.08.2017
10:32:44

Igor
11.08.2017
11:51:13
А как DSL билдер заставить кушать vararg-и? Или не стоит пытаться такое сделать?

Quantum Harmonizer
11.08.2017
11:51:43

Igor
11.08.2017
11:54:40
в чём вопрос?
Есть DSL билдер, в который мне хочется пропихивать помимо прочего, vararg children-ов, то есть, грубо говоря, передавать функцию а-ля init: Builder.() -> vararg SomeChildElement. Так сделать, очевидно, нельзя. Но есть ли какой-то способ просто и без гемора пропихнуть вот такого формата init: {SomeElement(), SomeElement(), SomeElement()} заместо { arrayOf(SomeElement(), SomeElement(), SomeElement()) }?


Quantum Harmonizer
11.08.2017
11:56:21
Есть DSL билдер, в который мне хочется пропихивать помимо прочего, vararg children-ов, то есть, грубо говоря, передавать функцию а-ля init: Builder.() -> vararg SomeChildElement. Так сделать, очевидно, нельзя. Но есть ли какой-то способ просто и без гемора пропихнуть вот такого формата init: {SomeElement(), SomeElement(), SomeElement()} заместо { arrayOf(SomeElement(), SomeElement(), SomeElement()) }?
*arrayOf писать не нужно, пока не используешь именованные параметры.
А вот мне не кажется особенно удобным передача нескольких лямбд одной функции.

Igor
11.08.2017
11:57:03

Google

Igor
11.08.2017
11:57:12
Снизу - то, как я хочу, чтобы оно работало, сверху - то, как работает, собственно

Quantum Harmonizer
11.08.2017
11:58:42
а нужно передавать именно фабрику аттрибутов? я про ({ XmlAttribute(...) })

Admin
ERROR: S client not available

Igor
11.08.2017
11:59:52

Quantum Harmonizer
11.08.2017
12:01:09
можно оператор переопределить, например
attributes {
+ { XmlAttribute("3", "3") }
+ ...
}

Igor
11.08.2017
12:01:54
Ну, это, конечно, решение, и оно используется в kotlinx.html, но мне оно как-то не особо нравится ?Хотя, если нет аналогов, то придется сделать именно так. Спасибо!
Мдя. Забавно, что, если сказать, что это сделано с помощью перегрузки оператора для получателя в лице функции, используемой внутри билдера, то появляется желание удалить код и перейти обратно на java ?

Vadim
11.08.2017
12:44:03
псс ребзя) есть у кого опыт Mockito + kotlin?

Anton
11.08.2017
12:44:14
есть хуевый опыт

Михаил
11.08.2017
12:44:28

Vadim
11.08.2017
12:44:33
чому private var provider: Dog = Dog() мокается
private val provider: Dog = Dog()
нет

Михаил
11.08.2017
12:45:15
ну видать мокито не умеет в файнал поля мокать

Vadim
11.08.2017
12:45:39
ну об этом можно догадаться)

Михаил
11.08.2017
12:45:40
я обычно юзаю lateinit var

Vadim
11.08.2017
12:45:57
ну прост хотлось бы immutable поля иметь
ну ок чо) гугл тоже ерунду какую-то говорит

Google

Konstantine
11.08.2017
12:46:37

Михаил
11.08.2017
12:46:58
а как это работать долно?)

Konstantine
11.08.2017
12:47:59
Возможно мокито не в файнал не умеет, а к моменту инициализации еще не могет. А с бай лейзи поди сработает)
Предположение тупо)

Vadim
11.08.2017
12:48:31
не помогло(

Михаил
11.08.2017
12:49:24
как вариант можно без аннотаций

Quantum Harmonizer
11.08.2017
12:49:35
я, может, ничего не понимаю в ООП, но зачем мокать поля?

Михаил
11.08.2017
12:50:04
юзай korlin mockito https://github.com/nhaarman/mockito-kotlin
уберет боль некоторую

Vadim
11.08.2017
12:51:28
ну не, тут только в вторую мокито работу с final classes завезли из коробочки
для котлина

Михаил
11.08.2017
12:52:07
а это просто набор расширений, работает вместе с мокито вторым
давно завезли mock файнал классов))