
Михаил
13.06.2017
18:46:12
странно почему доступ к приватным членам из тестов захейтили. было бы киллерфичей)

Sergey
13.06.2017
18:48:37
всю идею юнит тестов сломать
инкапсуляцию по одному месту пустить вот так просто

? animufag ?
13.06.2017
18:49:03

Google

Михаил
13.06.2017
18:49:37

Sergey
13.06.2017
18:50:30

Adam
13.06.2017
18:50:37
Мне больше всего нравится оправдания разработчиков Kotlin: типа выведение типа везде - слишком сложная штука (разработчиков Typescript это не остановило), люди проголосовали за неизменяемые данные (на втором месте), но это сложно и мы ничего не обещаем...

Михаил
13.06.2017
18:50:49
в андроиде вон есть @VisibleForTesting

? animufag ?
13.06.2017
18:51:09
ого как там классно пополам за и против

Михаил
13.06.2017
18:52:34
inline classes ?
шта?

Dibro
13.06.2017
18:53:42
шта?
а почему нет? аналогично инлайн функциям

Михаил
13.06.2017
18:54:08
типа все члены класса инлайниться будут?
профит какой?

Evgeny
13.06.2017
18:54:23
Это получается типа typealias только с более строгой проверкой типа

Dibro
13.06.2017
18:54:30
правда думаю существенные ограничения будут

Evgeny
13.06.2017
18:54:44
Там только 1 поле вроде в таких классах можно

Google

Dibro
13.06.2017
18:54:45
ну хз
смотря как сделают

Михаил
13.06.2017
18:55:25
типа для оптимизации фича?

Dibro
13.06.2017
18:55:47
инлайн для оптимизации как раз
значит да

Umren
13.06.2017
18:56:01
а нафига им фичи то? теперь каждые пол года у нас будет появлятся куча ненужного пока мы не станем скалой?)

Igor
13.06.2017
18:56:18
профит какой?
Это же типа скаляризации в хотспоте.
На старых андроидах и нетиве пригодится.

Михаил
13.06.2017
18:57:03
инлайн для оптимизации кто-то юзает?))) я ток в целях reified дженерик типов юзаю

Dibro
13.06.2017
18:57:23
зря

Evgeny
13.06.2017
18:57:31
Ну и для того чтобы когда все по ооп и для каждой сущности по классу, типа единиц измерения, на них можно будет поставить инлайн и они на самом деле примитивами будут гоняться

Dibro
13.06.2017
18:57:55

? animufag ?
13.06.2017
18:57:57
возможно итератор можно как-нибудь оптимизировать инлайном (хотя наверное нет)

Igor
13.06.2017
18:58:02
Как однажды сказал Бреслав "я вижу ты редко оптимизируешь код" ?

Михаил
13.06.2017
18:58:19

Dibro
13.06.2017
18:58:48
в смысле?

Adam
13.06.2017
18:59:00

Михаил
13.06.2017
19:00:56
и насколько мне инлайн на деле выигрышь даст по перфомансу?)

Vic
13.06.2017
19:01:21
с удивлением обнаружил что в котлине нет "SAM conversions for Kotlin interfaces"

Dibro
13.06.2017
19:01:34

Google

Adam
13.06.2017
19:01:52

Михаил
13.06.2017
19:03:25

Dibro
13.06.2017
19:03:33
а в чистой джаве при передаче лямбды всегда создаётся объект?

Михаил
13.06.2017
19:03:53
в 8ой нет
когда возможно она инлайнится

Adam
13.06.2017
19:04:07
в таблице деклараций инлайн не появляется

Igor
13.06.2017
19:05:23

Adam
13.06.2017
19:06:04
боксинг параметров?! WTF?

Anton
13.06.2017
19:06:44
ну при вызове метода,все переданные аргументы кастятся к типу параметра

Михаил
13.06.2017
19:06:49
но писать анонимные классы для их реализации - много места

Adam
13.06.2017
19:07:17

Dibro
13.06.2017
19:08:20
за что люблю котлин так это за возможность писать class Foo : (A) -> B { ... }
так как (A) -> B - по-сути интерфейс

Vic
13.06.2017
19:08:51

Adam
13.06.2017
19:08:55

Igor
13.06.2017
19:09:27
боксинг параметров?! WTF?
Лямбда в байткоде это же дженерик интерфейс просто.
А всё знают какой в jvm трендец с примитивными типами и дженериками.

Adam
13.06.2017
19:09:55

Igor
13.06.2017
19:10:44
SAM как раз и есть?
Ну да только если у тремя весь код на котлин, то сам нету.
Да и вся проблема в том что они дженерик.
Кстати в Kotlin же можно давать имена параметрам лямбы?
Где то это видел (через анатации что ли).

Google

Dibro
13.06.2017
19:13:38
так?

Adam
13.06.2017
19:13:52

Admin
ERROR: S client not available

Igor
13.06.2017
19:15:14
Нет, когда объявляешь сигнатуру метода который принимает лямбду.

Dibro
13.06.2017
19:16:09
не уверен, что это возможно
да и зачем

Adam
13.06.2017
19:17:15

Igor
13.06.2017
19:21:05
Котлин-бот говорит что этот код ОК (нет компа под рукой).
Это хорошо, так что лямбы себя неплохо документируют.

Михаил
13.06.2017
19:21:32
неплохо

Adam
13.06.2017
19:21:33
я из головы взял, но вообще должно быть ок

Михаил
13.06.2017
19:23:03
причем имена параметров подставяться автодополнением
все. sam не нужен

Adam
13.06.2017
19:23:49
Так да, SAM-это java-костыль, если сигнатуры лямбд есть
A function type is written as above, or may have named parameters, if you want to document the meaning of each parameter.
val compare: (x: T, y: T) -> Int = ...

Михаил
13.06.2017
19:26:08

Adam
13.06.2017
19:30:28
Что не так с этим кодом? Как правильно объявить кастомный сеттер?
class Test(x: Int) {
var x: Int = -1
set(value: Int) {
if (value < 0) {
this.x = value;
};
}
init {
this.x = x;
}
}
fun main(args: Array<String>) {
var test = Test(-2);
println(test.x);
}

Михаил
13.06.2017
20:00:51
на какую строку ругается?
вроде у кастомного сеттера нельзя объявить тип входящего параметра

Google

Adam
13.06.2017
20:01:19
рекурсивный вызов сеттера

Evgeny
13.06.2017
20:01:27
Присваивать надо не в this.x а в field в сеттере

Михаил
13.06.2017
20:02:00
+

Adam
13.06.2017
20:02:38

Anton
13.06.2017
20:03:07
ты доку то почитай

Михаил
13.06.2017
20:03:33

Evgeny
13.06.2017
20:03:35

Adam
13.06.2017
20:03:40
ты доку то почитай
читал, и не понял, зачем было придумывать такой идиотский синтаксис классов

Evgeny
13.06.2017
20:04:53
https://kotlinlang.org/docs/reference/properties.html#backing-fields

Руслан
13.06.2017
20:35:27
Очень рад что все согласились что Sam костыль :)

Igor
13.06.2017
20:47:46
Хорошо что они написали “we are not committing here to implementing any of these features in a particular time frame, or at all”

Umren
13.06.2017
21:14:30
конечно не надо все пихать, что там наголосуют