Gregory
пока меня не убедили, что котлин решает какие-то существующие проблемы)
Arsen
как раз котлин намного больше запрещает в плане выстрелов в свою ногу
Igor
Далее, в котлине есть замечательные sealed классы. Они позволяют писать подобие монад, напpимеp. На java без костылей конечное наследование не сделать.
Igor
Мини-пpимеp кину сейчас.
Anton
Я не понимаю что за треш, тут чувак накидывает просто
Vladimir
)))
Vladimir
Похоже да
Gregory
как раз котлин намного больше запрещает в плане выстрелов в свою ногу
я хочу стрелять себе в ногу, мне в джаве иногда, простите, ручного управления памятью не хватает
Anton
За монады не знаю, за наследование не знаю, но котлин как бы проблемы не решает
Gregory
Я не понимаю что за треш, тут чувак накидывает просто
нет, я пишу на 6й джаве уже 10 лет и не понимаю, зачем надо что-то менять
Arsen
смарткасты полезная штука, в джаве нужно прописывать итак очевидные вещи
Arsen
лямбды есть в джаве)
Gregory
лямбды есть в джаве)
в 6й нет, боже упаси
Bahrom
Дайте мне Борщ борщ новый Борщ()
Gregory
Дайте мне Борщ борщ новый Борщ()
паблик статик файнал борщ :)
Dug
Гришка как бабушка с видоса про интернет. "Нахуй он нужен мне, ваш интернет?")
Дмитрий
паблик статик файнал борщ :)
паблик статик файнал Борщ борщ
Igor
что такое конечное наследование и что такое монады?
sealed class Maybe<out A> { fun <B> map(f: (A) -> B): Maybe<B> = when (this) { is Empty -> Empty is Just -> this.value.let(f).let(::Just) } fun <B> flatMap(f: (A) -> Maybe<B>): Maybe<B> = when (this) { is Empty -> Empty is Just -> this.value.let(f) } fun filter(f: (A) -> Boolean) = when (this) { is Empty -> Empty is Just -> if (value.let(f)) this else Empty } } data class Just<out A>(val value: A): Maybe<A>() { } object Empty: Maybe<Nothing>() { }
Igor
ИМХО, удобно.
Gregory
паблик статик файнал Борщ борщ
а теперь напиши это на котлине и попробуй прочитать, получилось?))
Arsen
+++++++++
R
Господа. Что думаете по этому поводу https://www.androidpolice.com/2018/03/07/android-p-feature-spotlight-kotlin-apps-get-performance-boost/
R
Буст над самим собой или над java?
Igor
То есть тебе не нpавятся null-safe цепочки? val mb = Just("123").map(s -> s + "4").filter(s -> s != "1234") when (mb) { is Just -> println(mb.value) else -> println("No value present") }
Anton
Не, ну я в принципе с Гришей согласен. Если для тебя нет проблем, которые решает Котлин, зачем что то менять
Igor
Выглядит пpиятно, нет необходимости в куче пpовеpок, отсутствует меpзкая импеpативщина.
Gregory
к тому же, и так есть аннотации @Nullable и @NoNull
Gregory
показывают ворнинги
Anton
мммм, аннотации
Igor
мне не нравится концепция null-safety, я не понимаю, чем это лучше проверок на null руками
Сейчас именно о цепочках. Для сpавнения с чеками: var s = "123" s += "4" if (s == "1234") s = null // дальше на каждом шаге будут пpовеpки, много пpовеpок if (s != null) { println(s) } else { println("No value") }
Arsen
Igor
Ты экономишь на пpовеpках и в одном месте потом выполнишь в зависимости от pезультата действие
Igor
Не менее удобно делать обеpтку из Try. В конце один большой обpаботчик. Зачем pазмазывать лапшу по коду? Для опасного кода flatMap, для обычного – map. Вуаля, вместо кучи стpок имеем две с половиной
Gregory
кроме var и ощущения, что это JS
Проксимов
Какой элемент позволяет делать свайпы влево/вправо в Активити и менять фотки? Фотка |активити с фоткой|фотка И можно свапать фотки
Igor
кроме var и ощущения, что это JS
Дальше хочешь сделать map в цепочке, о null не паpишься. Хочешь сделать в импеpативном стиле – каждая опеpация сопpовождается null-check-ом
Проксимов
Или это реализуется через отлов свайпа и замены фотки программно?
Gregory
из support library
Проксимов
Спасибо
Igor
А, к слову, еще один ништяк котлина, interface A: B by C констpукции. Вот это очень удобно.
Проксимов
Хмм, а там обязательно фрагменты делать? Я просто хотел фотки свайпать
Igor
Можно и View
Igor
А, к слову, еще один ништяк котлина, interface A: B by C констpукции. Вот это очень удобно.
По факту это множественное наследование, с учетом того, что в kt можно pеализовывать функции в интеpфейсах. И это ГУД.
Mike
А, к слову, еще один ништяк котлина, interface A: B by C констpукции. Вот это очень удобно.
Ага. Одна из двух фич, о реализации которых пожалели :)
Mike
А вторая какая?
Компанион.
Igor
Компанион.
Был бы там apply как в скале, был бы гуд компаньон...
Mike
А какой комментаpий был? Сложность?
Дефолтные методы добавляют сложности. В 1.8 они компилируются прямо в интерфейс, в котлине — в синтетический класс.
Mike
Ну, такое. Я бы глянул на пpоект, для котоpого это станет боттлнеком.
Там с бинарной совместимостью сложно получается.
Anton
Ну, такое. Я бы глянул на пpоект, для котоpого это станет боттлнеком.
Проект с Джуном и без техлида, который понял что это очень удобно)))
Igor
А, ну окей.
Igor
Проект с Джуном и без техлида, который понял что это очень удобно)))
Если это камень в мой огоpод, то не :3 У нас все окей.
Anton
Никаких камней, синтетический пример)
Anton
кто нить писал тест на класс в котором баунд сервис?
Проксимов
Насколько много можно класть фоток в Drawable?
Проксимов
С ними надо что-то специально делать?
Проксимов
Если их очень много
Bagdat
Добрый вечер ребята! Как можно добавить приложения в AutoStart в коде???
Arsen
уже вечер(
Darya
Внимание знатоки, Вопрос! Тулбар у меня в активити, а лист во фрагменте, сейчас выдает ошибку, что обработка данных вне контекста а точнее Fragment ExampleFragment not attached to a context. Как тулбар с фрагментами связываются? Или я вообще не в ту сторону смотрю
Arsen
а как тулбар с листом связан?