@kotlin_lang

Страница 557 из 982
Mikhail
21.02.2018
18:29:38
нет

они ж только после того как ты написал

Andrew
21.02.2018
18:30:16
помнится мне, кто-то заводил на youtrack фичреквест на тему такого интеншна, и его закрыли с утверждением, что оно нинужно.

Mikhail
21.02.2018
18:30:48
окей, есть способы самому настрочить?

Google
Andrew
21.02.2018
18:31:22
без специального интеншна — вряд ли.

Kirill
21.02.2018
18:32:02


(cmd+p не нажимал, тултип появился сам)

Виталий
21.02.2018
18:43:51
подскажите пжалста как вот из этого : private var atlasRegions = { mapOf<String, TextureRegion>(atlas.regions.let { it.last().name to it.pop() }) } сделать вот это: private var atlasRegions = { mapOf<String, TextureRegion>(atlas.regions.let { it.last().name to it.pop() -> while (it.size > 0)}) } то есть получать пары в mapOf пока не закончится atlas.regions ? инициализировать мапу таская значения массива пока тот не обнулится.

Виталий
21.02.2018
18:55:43
myMap.size = 1

Dibro
21.02.2018
18:57:45
берет ток последнее значение
значит или в списке один элемент или генерятся одинаковые ключи

Sergey
21.02.2018
20:53:08
как-то с дебагом каналов корутин не очень радужно

Kirill
21.02.2018
20:53:39
Я скоро допилю для них дебаггер...

Sergey
21.02.2018
20:54:34
я просто хотел поныть)) круто! ждемс

Google
JRoot3D
21.02.2018
20:54:51
Sergey
21.02.2018
20:56:52
1. не ловит обработку сообщения из канала 2. после пробуждения не всегда распознает локальные переменные

Kirill
21.02.2018
20:59:04
Про локальные переменные -- это на kotl.in/issue

Sergey
21.02.2018
21:00:19


Kirill
21.02.2018
21:02:14
А если развернуть this ?

Sergey
21.02.2018
21:03:57


хотя забавно, если сделать скажем val a = cb.await() val b = 2// ??? val c = 2 и поставить брейкпоинт на c то все окей

Kirill
21.02.2018
21:04:42
Так, а если сделать evaluate expression и там ввести a?

Sergey
21.02.2018
21:05:07
Cannot find local variable: name =a



Kirill
21.02.2018
21:06:04
Вообще 0 идей почему так может быть. Сделай тикет в ютреке, пожалуйста

Dibro
21.02.2018
21:06:25
может потому что они анюзед и игнорятся компилятором?)

Kirill
21.02.2018
21:06:45
Quantum Harmonizer
21.02.2018
21:08:03
известная проблема — дебаг в корутинах работает криво

я думаю, что тикет давно есть

Роман Елизаров сам предупреждал, что имена переменных изуродованные или отсутствуют вовсе)

Sergey
21.02.2018
21:09:15
если поставить брейкпоинты и ходить по ним, то все более-менее окей. а если через Step Over в надежде что сработает брейкпоинт в корутине, то нифига)

я помню так еще golang баловался когда был только плагин к идее, там тоже с корутинами была печаль в плане дебага

https://youtrack.jetbrains.com/issue/KT-18576 уже есть такой баг

Roman
22.02.2018
05:39:29
val a = 10 println(a) Теперь будет резолвиться.

Google
Roman
22.02.2018
05:40:10
Причину я сказать точно не могу, но подозреваю, что котлин каким-то образом освобождает переменную как только она больше не нужна.

Egor
22.02.2018
06:04:00
Оптимизации компилятора же

Roman
22.02.2018
06:34:21
Мб. Я не так хорошо разбираюсь в байткоде чтобы сказать точно.

Эта оптимизация справедлива вообще для всех программ на котлине, не только для корутин.

А вот на яве я такого не припомню.

Alexey
22.02.2018
08:01:56
Причину я сказать точно не могу, но подозреваю, что котлин каким-то образом освобождает переменную как только она больше не нужна.
Нет, тут всё намного проще, для await/async генерируется машина состояния, то есть получается что то типа when(stage) { 1 -> 2 -> //бряка где то тут и так как нам не нужна переменная a, то компилятор не сделал её востановление из контекста }

Проблема рутин в том, что код кажется простым, но на самом деле люди не понимает что там происходит

Оптимизации компилятора же
Это написано где то в спеке или ты просто хочешь чтобы оно так было?

Bogdan
22.02.2018
08:13:35
я думаю компилятор решил ее даже не создавать, переменая не используется, но вопрос чего тогда с добавлением переменой с ве заработало

Проблема рутин в том, что код кажется простым, но на самом деле люди не понимает что там происходит
вот тут и вопрос, вроде и расписано как они работают, но нада лезть в кишки

Quantum Harmonizer
22.02.2018
09:24:57
Уже обсуждали баг кодогенерации HotSpot, когда результат getAndSet затирается? https://twitter.com/relizarov/status/966261488041242625

Alex
22.02.2018
09:32:59
Видел этот баг

Очень интересно, на самом деле)

Bogdan
22.02.2018
09:38:15
Quantum Harmonizer
22.02.2018
09:41:37
вопрос когда
баг обходится созданием промежуточной локальной переменной (отдельный вопрос — что в байт-коде?), поэтому не вижу причин для спешки

Google
whalemare
22.02.2018
09:44:22
ну так, баг который можно обойти не такой уж и баг. © Oracle
значит ли это, что код работающий в руках разработчика - код без багов?

whalemare
22.02.2018
10:32:05
Нет
Спасибо!

Andrew
22.02.2018
12:55:33
Чистый итог по android-ktx: 1) спёрли часть функциональности из Anko; 1) спёрли имя у libktx, которые теперь будут страдать (https://github.com/libktx/ktx/issues/128). Зато made by Google. ?

Vitalii
22.02.2018
12:57:31
Google такой Google

whalemare
22.02.2018
12:59:02
Причем все эти экстеншены уже большинство сами себе написали по необходимости)

Sasha
22.02.2018
13:22:58
Google такой Google
Как будто это первый случай.)

Mikhail
22.02.2018
13:35:47
Мне кажется, что это либа просто очередной наброс "смотрите, какие приколюхи в колине еще можно"

Чтобы доклады в этом духе слегка приостановились

Виталий
22.02.2018
14:40:28


подскажите, это нормально ваще, или проще создать классы AA со своими интерфейсами и инитить по необходимости ?

Andrew
22.02.2018
14:42:20
а зачем там оверрайды draw? они потом будут реализованы или так и останутся?

Виталий
22.02.2018
14:42:51
гетКласс функции - это уже готовые объекты типа в массив которые будут загоняться

Andrew
22.02.2018
14:44:28
дык их же вроде как можно убрать, зачем оверрайдить исключительно для делегации вызова в `super`-то. я хотел отметить, что раз остаётся только update переопределённый, то сделать бы фабрику, которая лямбды принимает, но тут же интерфейсы у классов разные, не прокатит.

Alexey
22.02.2018
14:44:34
Ананонимные классы выглядили бы логичнее

Виталий
22.02.2018
14:44:37
ну да можно было реализовать в верхнем интерфейса

Andrew
22.02.2018
14:45:18
А вообще люди не зря такие вещи делают на компонентах, ибо щас добавится ещё один признак и вы получите комбинаторный взрыв.

Даже если нет желания использовать готовую ECS, можно по крайней мере повдохновляться, как они это делают.

Google
Andrew
22.02.2018
14:46:27
Речь о каком-то движке вроде LibGDX?

Виталий
22.02.2018
14:46:45
фреймворк

Andrew
22.02.2018
14:46:58
https://github.com/libgdx/ashley https://github.com/junkdog/artemis-odb

Виталий
22.02.2018
14:47:11
да дело не в нем, мне правильно все выстроить, чтьо бы оптом голову не ломать

https://github.com/libgdx/ashley https://github.com/junkdog/artemis-odb
это уже было, не догоняю эшли, пока не разбирался честно сказать

Dibro
22.02.2018
14:48:42
это уже было, не догоняю эшли, пока не разбирался честно сказать
там все очень просто, можешь сначала про сам принцип ECS почитать

Andrew
22.02.2018
14:48:57
Основная мысль -- собирать конечные игровые объекты из отдельных data classes со свойствами, и уносить логику их обработки в т.н. системы. Если делаете сами и с ходу эшли не осилили, то попробуйте пока без систем перебиться, держите логику в компонентах.

Andrew
22.02.2018
14:52:05
То есть в итоге у вас не будет тыща AA, которые реализуют пачку интерфейсов, а будет, грубо говоря, interface Component class GameObject(val components: MutableMap<Class, Component>) { fun addComponent(c: Component): components[c.javaClass] = c } data class Pos(var x: Float, var y: Float): Component data class Health(var hp: Int): Component val character = GameObject character.addComponent(Pos(0, 0)) character.addComponent(Health(100))и вперёд

John
22.02.2018
14:52:05
компонент Position (x, y, [z])

Dibro
22.02.2018
14:52:18
компоненты это имеется ввиду component1,2,3 и т.д ? я тож не догнал зачем это.
компонент - чистые данные, модель энтити - набор компонентов система - обработка компонентов, логика

John
22.02.2018
14:52:20
компонент Speed(vector3 speed)

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