Sergey
07.09.2017
08:54:31
вон недавно на olx завезли в пейменты котлин, и довольны шо слоны
теперь будут паразитировать на всю компанию)
Nick Senchurin
07.09.2017
09:03:35
можно ли подружить с котлином jetty сервер ? который собирается на sbt ? ?
Igor
07.09.2017
10:13:21
Ребят, а есть где-нибудь список/статья на тему “чем kotlin лучше es6/ts/flow”?
Google
Sergey
07.09.2017
10:14:47
kotlin js вроде эксперементальный еще
Руслан
07.09.2017
10:15:18
С 1.1 не экспериментальный
Tipok
07.09.2017
10:20:54
В классах, постоянно такая ситуация:
private var interstitialAd: InterstitialAd? = null
и что-то тип этого в функции http://screenshot.ru/d37bfce626486519bd910e696dd9fd33.png
как вообще правильно и красиво должна выглядеть проверка на null, а то что-то я ни туда ушел
Igor
07.09.2017
10:22:21
Anton
07.09.2017
10:24:02
да это вьюхи же сделай их lateinit
Tipok
07.09.2017
10:27:33
да это вьюхи же сделай их lateinit
бывают моменты, когда мне приходит такой тип var data: T?
в таких же случаях я не смогу сделать lateinit, тогда как решать проблему постоянные восклицательных знаков и вопросов?
Anton
07.09.2017
10:31:38
элвис оператор, let и прочие штучки
Igor
07.09.2017
10:31:58
Mi
07.09.2017
10:32:06
вообще принцип такой, что не использовать глобальные переменные в методах, если они nullable
пересохранил в локальную, проверил - и всё, точно не будет там никаких нулов
это сделано потому что возможно где-то когда-то будет в другом потоке нул
Google
Mi
07.09.2017
10:33:03
но на практике это не очень приятно конечно
потому что чаще всего код однопоточный
Tipok
07.09.2017
10:35:21
спасибо всем, прояснилось
Dmitry
07.09.2017
10:54:52
Dmitry
07.09.2017
12:21:35
Скажите, существует ли json парсер который будет генерировать исключение если я пытаюсь парсить null значение в not null поле в kotlin классе? Gson например может в not null поле все равно записывает null и я получаю NPE при обращении.
Roman
07.09.2017
12:29:10
Скоро будет, как часть проекта Kotlin Serialization
Руслан
07.09.2017
12:29:16
Jackson + kotlin-jackson module должен уметь
Sergey
07.09.2017
12:30:42
jackson умеет да
Dmitry
07.09.2017
13:02:54
Спасибо большое. А Kotlin Serialization то что нужно. Надеюсь скоро его выпустят.
Jackson хорош, но для Android тяжеловат, много зависимостей и классов с собой тянет
Sergey
07.09.2017
13:25:55
ну и для жса полезно
? animufag ?
07.09.2017
13:49:28
был чатик про андроид архитектуру, но насколько помню там челы на серьёзных щах сидят, так что спрошу здесь.
допустим есть активити/фрагмент с текствью (потом мб усложню пример). как там люди обычно делают:
1. активити запрашивает у презентера текст. и соответственно активити переподписывается на обновление модели
2. презентер ставит текст (использует сеттер, как бы не зная про текствью). и соответственно презентер подписывается на жизненный цикл
?
Михаил
07.09.2017
14:01:10
данные презентер берет из модели, модель и презентер жц не имеют
? animufag ?
07.09.2017
14:03:55
передавая = сетит каждое поле?
либо сетит некоторый датакласс в котором все нужные значения полей энейблед/дизейблед прописаны?
Михаил
07.09.2017
14:06:20
у меня realm, поэтому я обычно передаю во вью объект (модельку) реалма, вьюха берет эту модельку и инициализирует разметку согласно ее данным
? animufag ?
07.09.2017
14:34:10
Ну я думаю максимально тупые данные посылать в активити. Типа showRemoveButton: Boolean. Не думаю что такое имеет смысл хранить в персистенте
Михаил
07.09.2017
14:42:20
например, на экране регистрации при валидации полей вызываю у вью метод setRegisterEnabled(boolean)
Igor
07.09.2017
14:57:39
? animufag ?
07.09.2017
14:59:39
что мне тут не нравится: тестирование через expect
во-первых был на ios фреймворк для тестирования которому скажешь expect и он ожидает вызов ровно один раз. из-за этого до сих пор негатив к этим экспектам
во-вторых код теста однозначно привязывается к коду реализации. прям хоть генераторы тестов пиши
Google
? animufag ?
07.09.2017
15:01:10
Sergey
07.09.2017
15:01:10
expect(any()) нет такого?
expect(atLeast(2))
expect(once())
и тд
? animufag ?
07.09.2017
15:05:19
https://stackoverflow.com/questions/5434649/how-to-verify-number-of-method-calls-using-ocmock
ну там первый ответ посмотри
если 4 раза вызвать метод то тест провалится
Igor
07.09.2017
15:06:11
продолжай
Это я к чему вообще - на android тоже можно ее применить
? animufag ?
07.09.2017
15:07:11
ну есть всякие reswift (более менее успешная среди этих поделок) ну и на андроиде тоже. вопрос в том есть ли в елм что-то особенное чего нет в редукс?
Igor
07.09.2017
15:08:48
? animufag ?
07.09.2017
15:09:35
концептуальная? это слово можно пропустить при чтении или оно наделено особым смыслом?
Igor
07.09.2017
15:12:11
? animufag ?
07.09.2017
15:12:51
ну вообще да. это замечательно. хотя и возможность по-разному реализовать работу с асинхроными вызовами тоже хорошо. но по идее весь этот цикл датафлоу обязательно связан с вызовами сети/персистента
https://github.com/sangcomz/Elm-Architecture-Android-Todo
Igor
07.09.2017
15:20:54
You
07.09.2017
15:25:18
гляньте что нашел в своем старом проекте)
// TODO: 04.10.2015 implement
? animufag ?
07.09.2017
15:26:12
таких дофига. я думаю создавать вью в принципе не нужно в этом цикле. Просто где-то отдельно пишешь анкоКомпонент, у него прописываешь методы которые могут изменять ui. получается более менее читаемо.
в отличие от вот этого дерьмища
val attrs = intArrayOf(R.attr.selectableItemBackgroundBorderless)
val typedArray = context.obtainStyledAttributes(attrs)
val backgroundResource = typedArray.getResourceId(0, 0)
setBackgroundResource(backgroundResource)
typedArray.recycle()
(ну тут правда явно нужен экстеншен метод)
(и как оказалось я уже писал для себя такой метод)
https://gist.github.com/inamiy/bd257c60e670de8a144b1f97a07bacec
Google
? animufag ?
07.09.2017
18:46:35
?
есть ли какой-нибудь способ снизить бойлерплейт в котлине связанный с жизненным циклом активити?
ну там всё банально подписываюсь/отписываюсь. наследование привлекать не хочется
Pavlík
07.09.2017
18:49:49
У android есть FragmentLifecycle
Может поможет, но могу и сморозить
Anton
07.09.2017
18:51:43
да сделай базовые реализации и все
? animufag ?
07.09.2017
18:53:48
их просто уже больше чем нужно. до меня было написано и теперь необходимо совмещать их эффекты
balolam
07.09.2017
19:12:45
? animufag ?
07.09.2017
19:13:51
делегаты или трюки на методах интерфейсов
перемножение этих трюков
balolam
07.09.2017
19:15:24
делегаты или трюки на методах интерфейсов
А как ты собираешься сбоку что-то прикручивать не добавляя наследование. Конечно можно часть логики переложить на extension функции, но без своего класса в иэрархии ничего не поделать)
Котлин делает то что можно сделать и на Java по сути, магии вы тут не встретите
? animufag ?
07.09.2017
19:19:17
ладно, настанет вот это https://developer.android.com/reference/android/arch/lifecycle/package-summary.html
и немного полегче станет
balolam
07.09.2017
19:22:18
Ну вообще, реализовать заточенный под себя LifecycleObserver достаточно просто. И после сможете прикручивать сбоку что угодно)
Через те же самые extension функции
Ivan
07.09.2017
22:20:17
я тут всё прослоупочил, да? Корутины перелопатили? https://www.youtube.com/watch?v=3xalVUY69Ok
или они такими и были при релизе?
чёт не помню там suspendCorutineOrReturn
Boris
08.09.2017
05:57:17
Ну как, их перелопалити ещё до входа 1.1 в релиз
Ну и не перелопатили, а немного изменили концепцию на более функциональную, что сделала её чуть более сложной в понимании, но более красивой и гибкой
Maxim
08.09.2017
09:45:36
Есть базовый класс с методом fun init(arg: Type), его наследует класс, с методом fun init(arg: Type, secondArg: AnotherType? = null). При вызове на объекте класса наследника метода object.init(arg) вызовется метод базового класса или наследника?
Google
Жабра
08.09.2017
09:47:17
Зависит от того объект какого класса.
А, наследника, извините, не увидел.
Вызовется метод наследника.
Maxim
08.09.2017
09:48:14
я тоже ожидал такого поведения)
Жабра
08.09.2017
09:48:45
А что, разве нет?
Maxim
08.09.2017
09:49:36
походу нет
Сейчас вот попробовал. Вызывается метод базового класса
Думаю, нормально ли это? Понимаю, конечно, что это в принципе не самая лучшая идея так делать. Но, я ожидал что это сработает
Жабра
08.09.2017
09:52:05
Вроде как должно было. Я думал, метод наследника перекроет метод родителя.
Mi
08.09.2017
09:52:35
Я думаю что дефолтные параметры не с помощью перегрузки реализуются
Разве что с аннотацией что-то вроде jvmoverloads
Maxim
08.09.2017
09:57:32