@kotlin_lang

Страница 245 из 982
Igor
12.07.2017
11:59:30
В последнем js, в typescript есть указание типов, не просто так.
Только оно “опциональное” конечно и any никуда не делся. Направление верное, но обратная совместимость не позволит ему стать норм языком (вся надежна на KotlinJS)

Михаил
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
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
А теперь покажи исходный код Kotlin и такой же код на TS
не пишу на TS, но знаю что он очень хорошо переводится в джс

Google
Dibro
12.07.2017
12:24:46


Roman
12.07.2017
12:30:02
чем отличается runBlocking запущенная на меин треде и runBlocking(UI) в контексте андроида?
Тем что main поток можно блокировать (для того он и есть), а вот главный поток Анлроида не рекомендуется - всё подвиснет. А вообще надо бы сделать что runBlocking в этом случае не вис а падал ошибой "нельзя блокировать главный поток Андроида!"

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

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

Михаил
12.07.2017
12:41:58
просто в моем случаем оба вызова в контексте андроида. и получается main thread == UI thread. или я ошибаюсь?
похоже что runBlocking(UI) блокирует намертво из-за особенностей реализации, ибо даже код внутри этого блока не выполняется

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 символов это одно и тоже, да?

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

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

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

Quantum Harmonizer
12.07.2017
13:43:43
Хотя для перформанся, имхо лучше держать приватный readonly-singleton массив заполненный 0 длинной 11 байт
И делать System.arraycopy? До 32 элементов быстрее делать копирование без JNI-вызова.

Есть ещё Arrays.fill.

Igor
12.07.2017
13:46:57
И его копировать и дополнять?
А ты же там в стрим пишешь?

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

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

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
Можно же просто val xs = ByteArray (32)
Они по дефолту нулевыми заполняются ?)

Михаил
12.07.2017
14:02:22
Denis
12.07.2017
14:36:01
Всем привет

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

Например силки на апи методи в доках или описание моделей

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 Каким образом можно разрешить данную проблему?

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
DSL билдеры? https://kotlinlang.org/docs/reference/type-safe-builders.html
О, нашел о них статейку на медиуме, то что нужно :)

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>

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
че за экстеншен

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