@kotlin_lang

Страница 309 из 982
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 и прочие штучки

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
это сделано потому что возможно где-то когда-то будет в другом потоке нул
Можно и в однопоточном get написать, который будет занулять значение при отдаче, так что проверятьт конечно нужно

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. презентер ставит текст (использует сеттер, как бы не зная про текствью). и соответственно презентер подписывается на жизненный цикл ?

? 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)

? animufag ?
07.09.2017
14:59:39
что мне тут не нравится: тестирование через expect во-первых был на ios фреймворк для тестирования которому скажешь expect и он ожидает вызов ровно один раз. из-за этого до сих пор негатив к этим экспектам во-вторых код теста однозначно привязывается к коду реализации. прям хоть генераторы тестов пиши

Google
? animufag ?
07.09.2017
15:01:10
Слышал про архитектуру в Elm?
да. пытался на нём писать давненько. в общем то сейчас я так себе представляю что это как редукс, только с типами

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 (более менее успешная среди этих поделок) ну и на андроиде тоже. вопрос в том есть ли в елм что-то особенное чего нет в редукс?

? 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
https://github.com/sangcomz/Elm-Architecture-Android-Todo
Прикольно, только у него там каждый раз создается настоящие вью - это не очень правильно. Я думаю взять Litho что бы он кэшировал.

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
их просто уже больше чем нужно. до меня было написано и теперь необходимо совмещать их эффекты

? 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
Разве что с аннотацией что-то вроде jvmoverloads
Да, действительно, если аннотировать метод наследника @JvmOverloads, а метод базового класса сделать open, то работает, как говориться as expected. Спасибо

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