
Mikhail
31.08.2018
09:15:39
у такого паттерн матчинга не хватает destructive declaration
я как-то на Java писал паттерн матчинг с destructive declaration

Igor
31.08.2018
09:16:37

Mikhail
31.08.2018
09:16:50
но тогда придется избавиться от when и написать свой

Google

Alexander
31.08.2018
09:17:47

Andrew
31.08.2018
09:19:08

Igor
31.08.2018
09:19:08
https://gist.github.com/komigor/fe668171bcf0c83369de5218a090cf16
Вот тут с вынесением, и ИМХО, выглядит очень опpятно, и понятно, что это именно стейт

Quantum Harmonizer
31.08.2018
09:19:22

Alexander
31.08.2018
09:21:00

Quantum Harmonizer
31.08.2018
09:21:57

Alexander
31.08.2018
09:22:33
С чего это? Она работает асинхронно. Про быстроту вроде никто ничего не говорил

Andrew
31.08.2018
09:24:59

Quantum Harmonizer
31.08.2018
09:26:04

Alexander
31.08.2018
09:27:39
Ну это уже вопрос того, кто вызывает (на оба прошлых поста). Важно что я не хочу ее вызывать на main thread. Понятно, что у меня есть разные корутины. Для справки, я не работаю с бэкэндом, так что у меня специфиа немного другая.
Но собственно та же проблема возникает с любыми функциями. Без чтения документации нельзя узнать, для чего она предназначена.

Google

Quantum Harmonizer
31.08.2018
09:29:07
В мобилке я бы тоже не хотел блокировать computations-пул вводом-выводом, например.

Alexander
31.08.2018
09:29:20
И не в мобилке тоже :)
Смысл в том, что suspend помечены функции, которые не гарантируют, что они вернутся сразу
А прична может быть разная.

Andrew
31.08.2018
09:29:51

Alexander
31.08.2018
09:31:38
В принципе согласен, Когда есть возможность, лучше все засунуть внутрь. Я просто периодически мечу методы в интерфейсах как suspend даже если реализация не использует suspend вызовы, чтобы заранее размечать то, что надо думать откуда вызывать.

Igor
31.08.2018
09:41:35

Igor
31.08.2018
09:41:48
Не pучками же писать :)
Можно посмотpеть кстати в стоpону кодогенеpации arrow-kt, может получится в ее pамках сделать. (Пока не смотpел этот pаздел вообще).

Mikhail
31.08.2018
09:47:25

Igor
31.08.2018
09:47:59

Mikhail
31.08.2018
09:49:11

Igor
31.08.2018
09:51:48
и по copy менять не получится

Mikhail
31.08.2018
09:52:46
а разве оптика с этим не справляется?
она ведь для того и нужна

Maxim
31.08.2018
09:52:53

Google

Vladimir
31.08.2018
10:28:16

AleksanderSh
31.08.2018
10:30:48
Покажи кусочки кода, мб что-то придумаем.
Вот, есть класс на java. В нем несколько методов для вывода и форматирования логов.
public class LogUtils {
public static void logd(String message) {
Log.d("Locating", message);
}
В proguard я пишу assumenosideeffects правило и в нем перечисляю нужные методы, который мне в релизе не нужны:
-assumenosideeffects class packagename.LogUtils {
public static *** logd(...);
}
В итоге из релизной апк вызовы этих методов удаляются, как и сам класс за ненадобностью.
Если LogUtils на джаве написан, то все ок, а если котлин, то не вырезается. Пробовал:
-assumenosideeffects class packagename.LogUtils {…}
-assumenosideeffects class packagename.LogUtilsKt {…}
-assumenosideeffects class packagename.LogUtils.Companion {...}

Vladimir
31.08.2018
10:34:03

Andrew
31.08.2018
10:34:16
А в Show Kotlin Bytecode не заглядывал?

AleksanderSh
31.08.2018
10:34:24

Igor
31.08.2018
10:40:45

Vladimir
31.08.2018
10:41:25

Ivan
31.08.2018
11:30:30
Поясните по инлайн классам. Не является ли недоступность типа инлайн класса в рантайме таким же недостатком, как type erasure у дженериков? Как там с аннотациями, они будут видны в рантайме?

Mikhail
31.08.2018
11:33:14

Ivan
31.08.2018
11:46:27

Vladimir
31.08.2018
11:48:46

Bogdan
31.08.2018
11:51:32

OlegKrikun
31.08.2018
11:53:05
Котоны, а кто нить может мне объяснить почему котлин плагин 1.3m2 настройчиво советует вот в таком примере:
val counter = list.map { it.someInt }.sum()
конвертировать list в сиквенс?
окай, сиквенс тоже умеет сум, вопрос снят

Alexander
31.08.2018
12:03:55

OlegKrikun
31.08.2018
12:04:20
ооо, спасибо

Bogdan
31.08.2018
12:05:43

OlegKrikun
31.08.2018
12:06:10
это я понимать

Ivan
31.08.2018
12:09:00

Google

Bogdan
31.08.2018
12:11:50
Инлайн классы еще эксперементальны

Ivan
31.08.2018
12:16:00
Что аннотации ?
Хотелось бы иметь к ним доступ хотя бы через плагины для компилятора, а еще лучше в рантайме

Bogdan
31.08.2018
12:28:53
Ну можно создать доп. Объект, но тогда смысл в инлайне теряется

Ivan
31.08.2018
12:33:10

Admin
ERROR: S client not available

Bogdan
31.08.2018
12:40:09

Mikhail
31.08.2018
12:42:28
Речь наверное об аннотировании в месте использования класса

Ivan
31.08.2018
12:44:16

Bogdan
31.08.2018
12:47:13
Зайдём з другой стороны, зачем вам аннотации + инлайн классы да еще в рантайме ?

Ivan
31.08.2018
12:52:08

Bogdan
31.08.2018
12:59:31
Нада позвать святого @Harmonizr что бы выгнал чадо ада ?

Ivan
31.08.2018
13:04:16
То есть спринг
Спринг в том числе. Аннотации и процессоры аннотаций уже есть в Java, может это и было ошибкой, но от этого уже никуда не деться. И в Котлине было приложено много усилий, чтобы это все продолжило работать.

Bogdan
31.08.2018
13:05:31

Mikhail
31.08.2018
13:06:44
да вроде в дискуссии о KEEP на гитхабе уже обсудили это и решили запретить

Google

Bogdan
31.08.2018
13:08:56

Ivan
31.08.2018
13:15:16

Bogdan
31.08.2018
13:17:00

Mikhail
31.08.2018
13:26:13

Quantum Harmonizer
31.08.2018
13:27:27

Igor
31.08.2018
13:56:52

Vitalii
31.08.2018
14:02:51

Sergey
31.08.2018
15:16:35
0.9 kotlin native релизят
тегнули уже релиз

Dibro
31.08.2018
15:44:34

Andrew
31.08.2018
15:47:12
И заново вкрученный в него cinterop

Boris
31.08.2018
16:11:17

Andrew
31.08.2018
16:11:45
А про новый интероп я ничего не слышал
Интероп старый, просто в новом Gradle-плагине его не было до последнего момента. Оно, конечно, решается одним Exec-таском, но приятнее из коробки иметь.

Boris
31.08.2018
16:12:01
Аа, ты про плагин

Bogdan
31.08.2018
16:49:55
Возник такой вопрос, если мне нужен касс\интерфейс c именнем Unit, обозначаеть целосность, объеденения. Как лучше назвать ? Или Можно обманывать котлин ? (имя пакета не хочется указывать)

Andrew
31.08.2018
16:54:49
Возник такой вопрос, если мне нужен касс\интерфейс c именнем Unit, обозначаеть целосность, объеденения. Как лучше назвать ? Или Можно обманывать котлин ? (имя пакета не хочется указывать)
> Или Можно обманывать котлин ?
Как обычно, тут может помочь либо qualified name с именем пакета, либо переимеованный импорт, если бы это был сторонний класс. Других вариантов я не знаю. Если это твой собственный класс — таки придумай другое имя, не мучай себя и тех, кто после тебя это читать будет.
> Как лучше назвать ?
Во-первых, "целосность, объеденения" — это слишком уж обширно, во-вторых, это слегка мимо темы чата вопрос :)

Quantum Harmonizer
31.08.2018
16:55:43
мб Union?