@kotlin_lang

Страница 975 из 982
Anton
24.10.2018
08:47:22
дал ридонли. каждый день промахивается чатом

Kirill
24.10.2018
08:47:54
и да, думаю сейчас все снова в холивар выльется) лучше продолжать не будем)
Не, я ж не говорю "ангуляр говно реакт форева", Согласен тему свернуть. Оффтоп, в конце концов )

Quantum Harmonizer
24.10.2018
09:36:06
Буквально вчера с коллегой обсуждали такую фичу свифта и потенциальную полезность её в котлине. Сошлись на том, что в котлине это сделано иначе, интерфейсами, и совать это ещё и на уровень языка не особо полезно, трудоёмко и несовместимо.

Google
Andrey
24.10.2018
09:38:16
Андрей тут твой выход
Не вижу вопроса, на который надо что-то ответить.

Alexey
24.10.2018
09:39:03
Не вижу вопроса, на который надо что-то ответить.
На иммитацию мутабельности при помощи do нотации в хашкеле ?

Даже звучит как дичь

Andrey
24.10.2018
09:44:23
На иммитацию мутабельности при помощи do нотации в хашкеле ?
Ну do нотация не имитирует мутабельность. Она вообще синтаксический сахар, чтобы цепочки операций >>= и >> при работе с монадами не писать явно, вот и всё. Через монады в Haskell много чего выражается, но это никак не связано с мутабельностью. Есть State монада, но она выражает последовательность состояний по сути, при этом каждое из состояний иммутабельно. Есть IO монада, она позволяет описать, какой сайд эффект мы ожидаем от внешнего мира, но описание, опять же, иммутабельно. Так что не совсем понял, что имеется ввиду под имитацией мутабельности. Может итерация по последовательности состояний, а может ещё что.

Ну разьве что http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-IORef.html

Изменяемая переменная, которую можно пользовать в контексте IO монады.

Alexey
24.10.2018
09:48:05
Ну это отдельный костыль, как и mvar

Andrey
24.10.2018
09:48:44
Ну за пределами IO сайд эффектов в Хаскеле нет, несколько я помню.

Andrey
24.10.2018
10:01:35
Тогда наверное имелось ввиду использование do нотации в контексте IO монады. Там действительно может показаться, что переменные меняются: do x <- getLine putStrLn $ "x = " ++ x x <- getLine putStrLn $ "x = " ++ x С точки зрения программиста кажется, что значение x поменялось, но на само деле, это просто аргументы разных лямбд. После "рассахаривания" do нотации получается вот такой код: getLine >>= (\x -> putStrLn $ "x = " ++ x) >> getLine >>= (\x -> putStrLn $ "x = " ++ x) По нему сразу видно, что это не значение у x поменялось, а это вообще разные x

Igor
24.10.2018
10:24:14
trace ?

Andrey
24.10.2018
10:24:54
unsafePerformIO
Ну да, есть бэк доры. Без этого бэк дора IO нельзя было бы исполнить в принципе, то есть main бы не работал и писать реальные программы было бы нельзя.

Google
Kirill
24.10.2018
10:25:17
нет
digest loop и 4 гб на вкладку - совсем не жирно

Alexandr
24.10.2018
10:25:49
digest loop и 4 гб на вкладку - совсем не жирно
это же как постораться надо. выпримитель рук поможет

digest loop и 4 гб на вкладку - совсем не жирно
в 6+ кстати пооптимизировали многое

Kirill
24.10.2018
10:26:20
enterprise

биллинг

и вся прозрачность исчезает с необходимостью думать о том должен ли тут быть 2way и сколько итераций дайджеста это сгенерит

так что лучше уж реакт

Igor
24.10.2018
10:46:34
так у них там и так есть defaultConfig
Спасибо, уже разобрался

Andrey
24.10.2018
11:04:40
digest loop и 4 гб на вкладку - совсем не жирно
в 2+ ангуляре нету дайджеста, это вы про 1 ангуляр говорите, путаете, разные вещи все таки, вообще разные

Alexandr
24.10.2018
11:05:48
Andrey
24.10.2018
11:06:46
да, я об этом писал уже, только я думал там с 6 оптимизировали
да и так летал как нужно, там икрементальный дом, вот Ivy render подвезли, еще лучше будет но это уже в другом чате если нужно

Denis
24.10.2018
11:18:58
А в котлине возможно передать через intent коллекцию/массив кастомных моделей? Просто модель с помощью Parcelable сделать легко, а вот коллекцию/массив этмх объктов?

Igor
24.10.2018
11:20:18
да, но в ынтырпрайзе до сих пор первый
А актуальный это 7. React уже 16, а RN за 4 года из 0.X не вышел - хех ну такой-то js-way ?

Boris
24.10.2018
11:21:14
"если он может мутировать" - это уж не так просто выяснить
Ну как, если всё вал и иммутабельное, то компилимся

Quantum Harmonizer
24.10.2018
11:22:01
Ну как, если всё вал и иммутабельное, то компилимся
То есть иммутабельная коллекция может быть только линкед?

массивы-то мутабельные

Google
Quantum Harmonizer
24.10.2018
11:22:27
и строки считать мутабельными, там жи массив

Denis
24.10.2018
11:23:13
putParcelableArrayList, котлин тут не при чём
а если просто array<CustomObject>?

Igor
24.10.2018
11:23:24
и строки считать мутабельными, там жи массив
Кстати, а ты знаешь способ, как промутировать строку без рефлешкена?

Alexey
24.10.2018
11:23:40
а если просто array<CustomObject>?
CustomObject should implements Parcelable

in this case it's possible

Denis
24.10.2018
11:24:19
in this case it's possible
да, объекты у меня реазлиют интерфейс Parcelable

Igor
24.10.2018
11:24:38
Да в целом тем, что довольно-таки долго будет все используемые библиотеки подбивать под это. Было интеpесно, запаpивался ли кто-то с этим или нет.
Так-с. Собственно, начал писать эту штучку, я ведь пpавильно понимаю, что в целом интеpесные всем эффекты огpаничиваются ForDeferred, ForIO и ForObservableK + возможность добавить маппинг на кастомные?

Quantum Harmonizer
24.10.2018
11:29:33
а если просто array<CustomObject>?
ну если есть метод, который принимает массив (я такого не помню)

Кстати, а ты знаешь способ, как промутировать строку без рефлешкена?
нет, но компилятору же нужно как-то доказать, что это невозможно (и не будет возможно в следующих версиях!)

Denis
24.10.2018
11:30:30
ну если есть метод, который принимает массив (я такого не помню)
можно воспользоваться toCollection(ArrayList()). Вроде работает

Денис
24.10.2018
11:31:24
Или я что-то не уловил?

Quantum Harmonizer
24.10.2018
11:31:52
не пойму, к чему это

Alexandr
24.10.2018
11:32:40
То есть иммутабельная коллекция может быть только линкед?
может быть только та, у каторой только методы получения реализованы

Quantum Harmonizer
24.10.2018
11:33:26
может быть только та, у каторой только методы получения реализованы
а если класс нефинальный и массив не приватный?..

Денис
24.10.2018
11:35:27
Есть реализации иммьютабл-коллекций - листов, которые внутри используют представление, подобное, скажем, эррэйлисту, имеют метод add, возвращающий новый экземпляр коллекции, в который копируется то же содержимое + добавляется новый элемент. По производительности бьёт, да, но так делают, кажется, в гуаве, например.

Google
Денис
24.10.2018
11:36:09
И они тоже

Денис
24.10.2018
11:38:44
На джокере автор cyclops-react рассказывал, что такое же по интерфейсу поведение он реализовывал как-то сложнее внутри (там что-то с менее "агрессивным" копированием и сложным хранением на основе каких-то деревьев), в итоге и чтение, и запись за O(log n), в отличие от

Денис
24.10.2018
11:39:44
Ну да.

Alexandr
24.10.2018
11:50:02
Кстати, а ты знаешь способ, как промутировать строку без рефлешкена?
по мотивам: небольшая задачка на собеседование, что будет вывдено на консоль и почему: public class StringTest { @Test public void test() { String a = "abc"; String b = "abc"; try { Field value = a.getClass().getDeclaredField("value"); value.setAccessible(true); char[] val = (char[]) value.get(a); val[1] = 'd'; } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } System.out.println(b); } }

Igor
24.10.2018
11:50:38
На какой джаве?

Alexandr
24.10.2018
11:52:02
на 8-й

На какой джаве?
какой ответ?)

Igor
24.10.2018
11:52:11
Фи, какой старье

Alexandr
24.10.2018
11:52:22
Фи, какой старье
на 11 будет так же

Igor
24.10.2018
11:53:21
на 11 будет так же
В 11 скорее всего будет NoSuchFieldException

Alexandr
24.10.2018
11:53:36
Igor
24.10.2018
11:53:46
почему это?)
Нет, скорее ошибка при касте byte[] в char[]

https://i.gyazo.com/2fdc766d2999f243d45ba2ea019cba49.png

Alexandr
24.10.2018
11:55:23
точняк

не обратил внимание что там byte

Boris
24.10.2018
11:55:48
Igor
24.10.2018
11:55:55
все работает
Значит это даже не 9 джава

Google
Boris
24.10.2018
11:57:52
нет, но компилятору же нужно как-то доказать, что это невозможно (и не будет возможно в следующих версиях!)
Массивы к сожалению мутабельные, с этим мне кажется сложно что то сделать, но это по сути единственное ограничение в базовых классах

Обёртку инлайн класс сделать ?

Quantum Harmonizer
24.10.2018
11:59:31
Собственно, из-за этого «единственного» ограничения в джаве везде используется заshitное копирование.

Boris
24.10.2018
12:01:00
Если он спрятан за инлайн классом без методов мутации, то норм

Компилятор же проверяет. А джаве сам инлайн класс всё равно нельзя провайдить

Т.е. вполне можно было бы для узких мест сделать решения

Осталось только подумать, какой профит от такой иммутабельности ? помимо тредсейфности

Igor
24.10.2018
12:47:10
А у Романа Елизарова был только один доклад на kotlincong2018? Мне просто казалось что два.

Igor
24.10.2018
12:47:50
А его получается не записывали?

Руслан
24.10.2018
12:50:22
Думаю да, обычно воркшопы не записывают

Mikhail
24.10.2018
12:52:15
А его получается не записывали?
он же за дополнительную плату?

Nameless
24.10.2018
12:55:53
какой ответ?)
я не буду у вас работать ?

Андрей
24.10.2018
12:56:14
Nameless
24.10.2018
12:57:38
xD
или лучше: “не вижу себя работающим в вашей команде”

мб после этого как раз и возьмут, типо адекватный чел, не повелся

Андрей
24.10.2018
12:58:30
или лучше: “не вижу себя работающим в вашей команде”
да ты че, 99% работы это получение строковых полей рефлексией, просто ты не модный

а оставшийся 1% - это собесы, где про это можно спросить

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