
Igor
12.07.2017
11:59:30

Михаил
12.07.2017
12:02:41
чем отличается runBlocking запущенная на меин треде и runBlocking(UI) в контексте андроида?

DarkMentat
12.07.2017
12:06:17

Igor
12.07.2017
12:08:43
Конкретно с TS, в Kotlin есть куча фич, которых нет в TS из того что он “суперсет JS” (byte/int/long/float ТИПЫ ?, expression-ориентированность, nullsafe таже, data class, работающая коваринтность коллекций…)

Google

Dibro
12.07.2017
12:12:44
и компилится он в чистый джс

Igor
12.07.2017
12:13:59
и компилится он в чистый джс
Как что-то хорошее ?… (имел ввиду что транслируется почти без изменений, особенно в es6)
(как бы везде трейдофы - “нормальный язык” vs “свой рантайма” - лично я выбираю язык)

? animufag ?
12.07.2017
12:14:14

Dibro
12.07.2017
12:16:51
просто посмотрите
это инлайн + дефолт параметры

? animufag ?
12.07.2017
12:17:56
выглядит как чистый джс

Dibro
12.07.2017
12:18:47
я про то, что в тс такого бы не было

Igor
12.07.2017
12:22:19
А теперь покажи исходный код Kotlin и такой же код на TS

Dibro
12.07.2017
12:23:10

Google

Dibro
12.07.2017
12:24:46

Roman
12.07.2017
12:30:02

Igor
12.07.2017
12:32:17
Это же мы с тобой обсуждали RN, пару недель назад?
Я тебе тогда еще говорил что пока не завезут @types от RN на Kotlin лучше даже не пытаться.
Сейчас ты вынужден руками эти портянки писать - надо было меня слушать ? (за одно бы TS подучил)

Artem
12.07.2017
12:32:38

Dibro
12.07.2017
12:33:36
вон какой код генерится, ужас

Михаил
12.07.2017
12:35:15

Igor
12.07.2017
12:41:42
окей, но проблема то есть
Это нормально:
- во первых - это абстракция, они обычно чего-то стоят по перформансу
- во вторых - авторы JS-движков, уже привыкли к JS по 1 MB. Там очень хороший JIT - он это все оптимизирует и быстрый GC.
(куда-лучше чем в том же в Android 4)

Михаил
12.07.2017
12:41:58

Roman
12.07.2017
12:50:48
runBlocking(UI) шедулит задачу на исполнения в UI очередь и ждет пока она исполнится. Естсвтенного, он этого никогда не дождется, будучи сам вызван из UI потока
Вот если бы можно было Android-е что-то вызвать чтобы "прокрутить" его eventloop изнутри runBlocking, то это можно было бы исправить, но я такого API там не нашел

Igor
12.07.2017
13:14:57
Может кто подскажет - как сделать это работать?

Quantum Harmonizer
12.07.2017
13:15:21
output.write(0)? :)

Igor
12.07.2017
13:16:44
я просто не особо уверен что это имеется в виду :) Должен производиться null-padding. Это ведь банальное заполнение нулями?
всего нужно пихнуть 12 ASCII символов, соответственно, там не тупо байты подставляться должны наверное (или нет?)

Quantum Harmonizer
12.07.2017
13:18:44
В UTF-8 будут тупо 12 байт. :)

Igor
12.07.2017
13:20:18

Igor
12.07.2017
13:24:03
Ну так для первых 127 символов это одно и тоже, да?

Igor
12.07.2017
13:25:32

Google

Artem
12.07.2017
13:31:58
Я ведь если попытаюсь обратиться к lateinit не проинициализированной проперти, то я получу НЕ нпе?

Sergey
12.07.2017
13:32:51

Artem
12.07.2017
13:32:58
Спасибо

Igor
12.07.2017
13:33:36
Хотя для перформанся, имхо лучше держать приватный readonly-singleton массив заполненный 0 длинной 11 байт

Igor
12.07.2017
13:43:22

Quantum Harmonizer
12.07.2017
13:43:43
Есть ещё Arrays.fill.

Igor
12.07.2017
13:46:57

Igor
12.07.2017
13:47:04

Quantum Harmonizer
12.07.2017
13:47:42
А, тогда массив мб и быстрее.

Igor
12.07.2017
13:48:15
Произвольный или ты спец заюзал bytearraystream что бы дополнять?

Igor
12.07.2017
13:51:21

Igor
12.07.2017
13:53:56
Я ведь правильно понял, что это будет работать как нужно?

Igor
12.07.2017
13:59:48
Можно же просто
val xs = ByteArray (32)

Igor
12.07.2017
14:00:11

Михаил
12.07.2017
14:02:22

Denis
12.07.2017
14:36:01
Всем привет

Yura
12.07.2017
14:36:27
Привет всем, интересует такой вопрос а в котлине можна в доках линки как в джаве оставлять ?
Например силки на апи методи в доках или описание моделей

Eduard
12.07.2017
14:38:20

Google

Yura
12.07.2017
14:39:31
и чтоб не копипаст делать с студии в браузел а быстрый переход, как в джаве
я доку почитал там нет ничего про гиперсылки
mb просто студия не поддержует покачто(

Nikita
12.07.2017
15:53:57
подскажите пожалуйста. Не могу понять как переопределить конструктор. Есть базовый класс с необязательныйми параметрами. Есть класс унаследованный с конструктором который принимает в качестве параметра только 1 параметр, либо все параметры (в т.ч. базового класса). Но не позволяет скомилировать ругаясь на некорректное определение 2 конструктора (который мол должен ссылаться на 1)
data class WorkerData constructor(
@SerializedName("device") var device: Device? = NULL_DEVICE)
: BaseWorker(), Serializable {
constructor(id: Int,
fullName: String,
shortName: String,
avatarUrl: String,
post: String,
planned: Boolean,
chief: Chief,
device: Device) : super(id, fullName, shortName, avatarUrl, post, planned, chief) //<<problem here
Каким образом можно разрешить данную проблему?


Igor
12.07.2017
15:55:34
подскажите пожалуйста. Не могу понять как переопределить конструктор. Есть базовый класс с необязательныйми параметрами. Есть класс унаследованный с конструктором который принимает в качестве параметра только 1 параметр, либо все параметры (в т.ч. базового класса). Но не позволяет скомилировать ругаясь на некорректное определение 2 конструктора (который мол должен ссылаться на 1)
data class WorkerData constructor(
@SerializedName("device") var device: Device? = NULL_DEVICE)
: BaseWorker(), Serializable {
constructor(id: Int,
fullName: String,
shortName: String,
avatarUrl: String,
post: String,
planned: Boolean,
chief: Chief,
device: Device) : super(id, fullName, shortName, avatarUrl, post, planned, chief) //<<problem here
Каким образом можно разрешить данную проблему?
попробуйте указать названия
для параметров

Admin
ERROR: S client not available

Igor
12.07.2017
15:55:45
тогда он скушает дефолтные

Михаил
12.07.2017
15:56:05
ты должен вызвать праймари конструктор

Nikita
12.07.2017
15:58:18
Хотя, кажется я понял

Михаил
12.07.2017
15:59:45
скорее всего тебе тут удобнее будет без праймари конструктора

Igor
12.07.2017
16:27:00
А есть какой-то гайдик по тому, как в котлине нормально билдеры сделать?

? animufag ?
12.07.2017
16:30:24
топ-левел функция с множеством дефолтных значений

Ivan
12.07.2017
16:30:31
дефолтные значения агрументов тебе завезли

Igor
12.07.2017
16:35:49

Igor
12.07.2017
16:37:29

Igor
12.07.2017
16:38:29
У Хадди было видео про них на youtube

Михаил
12.07.2017
16:40:05
http://news.ifmo.ru/ru/science/it/news/6683/

Google

? animufag ?
12.07.2017
16:42:18
хах
ну тип как могли набивали статью текстом

Igor
12.07.2017
17:01:45
А из кастомного get нельзя возвращать другие типы? По типу имеем property MutableSet<String> внутри класса, хотим чтобы извне она была видна как Set<String>

Антон
12.07.2017
17:23:54

Igor
12.07.2017
17:24:47

Anton
12.07.2017
17:45:37
как с мокито работать ?
java.lang.IllegalStateException кидает
на Mockito.Any(Class<?>)

Nikita
12.07.2017
17:47:01
Хм, а чего ты хотел добиться этим ?

Anton
12.07.2017
17:47:16
задать поведение мока?)
`when`(tasksRepository.insertTask(any(Task::class.java))).thenReturn(true)

Nikita
12.07.2017
17:47:31
Мокается ж все так юн как и в джавеъ..

Anton
12.07.2017
17:47:36
https://medium.com/@elye.project/befriending-kotlin-and-mockito-1c2e7b0ef791
вот тут рассказывается обо всех тонкостях работы с мокито

Nikita
12.07.2017
17:52:22
Странно, я практически так же поступаю. Правда без ексеншена

Михаил
12.07.2017
18:22:28

Anton
12.07.2017
18:22:52
а я без него

Михаил
12.07.2017
18:23:01
там была трабла any

Anton
12.07.2017
18:23:03
че за экстеншен