@kotlin_lang

Страница 958 из 982
Pavel
18.10.2018
15:09:03
Это какие-то привычки из js? Почему не должно быть?

.isArchived все же лучше чем .status == STATUS_ARCHIVED

Quantum Harmonizer
18.10.2018
15:11:02
Pavel
18.10.2018
15:11:21
.filter { it.isArchived }

Google
Quantum Harmonizer
18.10.2018
15:12:05
.filter { it.isArchived }
.filter(Message::isArchived)

Dmitry
18.10.2018
15:12:44
разве здесь нельзя создать 1 раз экстеншен
Можно делать что угодно, но если хочешь расширить функциональность сначала надо подумать, почему бы это не сделать в самом классе. Если, скажем область видимости нужна другая - тогда да. В остальных случаях это лишь попытка натянуть структурное программирование на ООП экосистему.

Pavel
18.10.2018
15:12:45
А профит какой?

Alexey
18.10.2018
15:25:40
Имхо, нет, если мне надо например собрать 3 строки в одну для вывода, и юзать это часто, я бы делал метод
Оч зависит от идеологии, data class это по сути сумма типов из функциональщине, которая просто описывает данные, если следовать этой логике, то в data class'е не должно быть никакой логики, в том числе каких то вычислимых полей

Alexey
18.10.2018
15:27:16
Quantum Harmonizer
18.10.2018
15:27:20
типа кортеж?

Alexey
18.10.2018
15:27:28
sealed - сумма

Pavel
18.10.2018
15:34:52
Ну да, произведение. Из этого не следует ничего.

Google
Alexey
18.10.2018
15:51:13
Ну да, произведение. Из этого не следует ничего.
Классно выдираете из контекста ?

Pavel
18.10.2018
15:52:12
Сори, не все прочитал

Alexey
18.10.2018
15:53:09
Если следовать этой логике, то пишите на хаскеле. Зачем здесь следовать этой логике и усложнять жизнь?
я ни говорил что так и только так надо делать. А сказал что если мы следуем определенной идеологии, то так будет правильнее

Alexey
18.10.2018
15:54:13
?‍♂️

но никто не следует фп идеологии фп ?
А можно было бы избежать части костылей

Mikhail
18.10.2018
16:00:52
иначе можно заполучить портянку с тычячей хелпер методов, прикрутить state и сайдэффекты

Quantum Harmonizer
18.10.2018
16:02:43
нууууу... Нет.

Mikhail
18.10.2018
16:03:08
нууууу... Нет.
вспомни rx

Quantum Harmonizer
18.10.2018
16:03:29
забыл как страшный сон

Bogdan
18.10.2018
16:03:37
А можно было бы избежать части костылей
наш мир, увы, не идеален, и приходится "костылить". Полный ФП подход не всегда хорош, иногда и хуже будет. Нужно продумывать архитектуру, хоть иногда, а не просто круды гонять ?

Mikhail
18.10.2018
16:03:40
вообще хорошее правило большого пальца - подумать, а вынес ли бы ты этот хелпер в интерфейс

никто не выносит в LIst методы типа foreach или zipWithNext

Quantum Harmonizer
18.10.2018
16:11:20
А котлин себя позиционирует как ООП? Или всё таки как мультипарадигму?
«Котлин ООП, потому что никто не знает, что есть функциональный язык» — как-то так у них написано

Alexey
18.10.2018
16:15:36
А кстати как оргументировали создатели языка, почему в data class по дефолту не val?

Метод copy как бы намекает, что оно должно быть так

Google
Quantum Harmonizer
18.10.2018
16:17:22
потому что глубокую иммутабельность при удовлетворительном интеропе гарантировать всё равно нельзя?..

Mikhail
18.10.2018
16:20:39
пора уже признать что Kotlin просто better Scala?

Alexey
18.10.2018
16:21:33
Sergey
18.10.2018
16:28:28
https://twitter.com/kotlin/status/1052956211119906816

Bogdan
18.10.2018
16:36:29
Метод copy как бы намекает, что оно должно быть так
copy можно использовать что бы просто клонировать объекты, типа java clone, только амного лучше. Правда не берусь сказать на сколько это часто нужно

Quantum Harmonizer
18.10.2018
16:37:46
Alexey
18.10.2018
16:45:22
copy можно использовать что бы просто клонировать объекты, типа java clone, только амного лучше. Правда не берусь сказать на сколько это часто нужно
Ну это очень утрированно и в целом не правда, clone не даёт определить новые значения для полей. Это как раз для удобства создание измененных иммутабельных данных. Например в реактивщине принять сообщение и кинуть изменённое дальше

Bogdan
18.10.2018
16:48:03
А кстати как оргументировали создатели языка, почему в data class по дефолту не val?
вроде как JB стараются делать чтобы между обычными и "специальными" классами была минимальная разница

Alexey
18.10.2018
16:50:12
я про то что иногда нужно сдублировать модель, и хочеться как-то покороче. Но это 1 на 1 000 000 случай
А у вас в основном какие классы используются мутабельные или иммутабельные?

Bogdan
18.10.2018
17:02:31
А у вас в основном какие классы используются мутабельные или иммутабельные?
стараюсь делать иммутабельные (изначально их делаю), но иногда приперает и проще сделать мутабельным (1-2 проперти)

хотя, когда JavaFX там модельки (и не только) подругому не сделаешь, интертоп...

Unknown
18.10.2018
17:10:38
Хелб, как такое переписать на Котлин?



Andrew
18.10.2018
17:12:45
Вчера идентичный вопрос задавали. inputStream.copyTo(outputStream).

Unknown
18.10.2018
17:15:44
реализация функции-расширение длинее java варианта)

Vladislav
18.10.2018
17:36:17
Boris
18.10.2018
17:51:06
Этот вопрос задают с завидной регулярностью

Google
Beholder
18.10.2018
18:24:42
ну если тупо, то while (true) { val length = input.read(buffer) if (length < 0) break output.write(buffer, 0, length) }

ну что, (п̶о̶с̶л̶е̶д̶н̶и̶й̶ ) крайний RC?

Денис
18.10.2018
18:52:15
ну что, (п̶о̶с̶л̶е̶д̶н̶и̶й̶ ) крайний RC?
Этим зачёркиванием и исправлением ты сделал мне очень больно. :(

Beholder
18.10.2018
19:06:00
ну кто знает, вдруг тут суеверные

релиз, небось, будет на школьных каникулах

Anna
18.10.2018
19:10:05
В Беларуси например любят к 7 ноября что-нибудь открывать. Главное, чтобы релиз к 7 ноября не приурочили ?‍♀️

Костя
18.10.2018
19:17:33
Релизы редко связаны с датами СССР(большинство проектов потому что пишется за бугор)

Kirill
18.10.2018
19:30:40
релиз, небось, будет на школьных каникулах
Чтобы больше тестеров было )))

Igor
18.10.2018
19:53:45
А кстати как оргументировали создатели языка, почему в data class по дефолту не val?
Потому что такого нет в синтаксисе обычных классов. А добавлять отделенный синтаксис с чем-то неявным в Котлине не любят.

OlegKrikun
18.10.2018
19:54:35
Bogdan
18.10.2018
20:36:27
Что "по дефолту не val"?
data class (noVal: Int) - компилятор ошибку кинет

Жабра
18.10.2018
20:37:01
data class (noVal: Int) - компилятор ошибку кинет
А. Ну и зачем?) Там же можно и var, была бы путаница.

Bogdan
18.10.2018
20:37:59
А. Ну и зачем?) Там же можно и var, была бы путаница.
ну и чт бы var не было, полность иммутабено

Жабра
18.10.2018
20:38:11
Иммутабельность - не всегда плохо же.

Bogdan
18.10.2018
20:38:38
скажем data class (value) == data class(val value)

+ сам так считаю

Boris
18.10.2018
20:58:26
скажем data class (value) == data class(val value)
У этого синтаксиса есть другой смысл

Google
Bogdan
18.10.2018
20:59:59
У этого синтаксиса есть другой смысл
так не я задаю вопросы, я ответил раньше что JB стараются делать минимальные различие между похожими вещами

Alexandr
19.10.2018
03:57:03
Andrey
19.10.2018
09:59:35
«Котлин ООП, потому что никто не знает, что есть функциональный язык» — как-то так у них написано
Как так никто не знает, что есть функциональный язык, если есть готовые реализации чисто функциональных языков? ФП парадигма основана двух операциях: лямбда абстракция - построение функции по выражению путём связывания переменной выражения с параметром функции. бета редукция - применение функции к значению. Из этих двух операций конструируются основные операции для практического применения. Например: композиция двух функций - комбинатор вида \f g x -> f (g x) рекурсия через Y комбинатор (комбинатор неподвижной точки) После этого любое вычисление (программа) сводится к последовательному построению функций, комбинированию их с помощью комбинаторов и применению к аргументам. Основная сложность при этом - побочные эффекты, так как функции в данной парадигме чистые => побочные эффекты всегда находятся несколько за пределами ФП: в рамках чистого ФП можно только описать, какой побочный эффект мы хотим, но не выполнить его. Итого: чистая ФП парадигма имеет следующие отличительные черты: 1. Замыкания, они же лямбда абстракции. Через них реализуется, в том числе, инкапсуляция. 2. Рекурсия как единственный способ реализации итеративных вычислений. 3. Ссылочная прозрачность - результат применения любой функции зависит только от значения параметра, к которому её применили. По мне, так определение даже более чёткое, чем для ООП, с его инкапсуляцией, наследованием и полиморфизмом.

Quantum Harmonizer
19.10.2018
10:01:04
Как так никто не знает, что есть функциональный язык, если есть готовые реализации чисто функциональных языков? ФП парадигма основана двух операциях: лямбда абстракция - построение функции по выражению путём связывания переменной выражения с параметром функции. бета редукция - применение функции к значению. Из этих двух операций конструируются основные операции для практического применения. Например: композиция двух функций - комбинатор вида \f g x -> f (g x) рекурсия через Y комбинатор (комбинатор неподвижной точки) После этого любое вычисление (программа) сводится к последовательному построению функций, комбинированию их с помощью комбинаторов и применению к аргументам. Основная сложность при этом - побочные эффекты, так как функции в данной парадигме чистые => побочные эффекты всегда находятся несколько за пределами ФП: в рамках чистого ФП можно только описать, какой побочный эффект мы хотим, но не выполнить его. Итого: чистая ФП парадигма имеет следующие отличительные черты: 1. Замыкания, они же лямбда абстракции. Через них реализуется, в том числе, инкапсуляция. 2. Рекурсия как единственный способ реализации итеративных вычислений. 3. Ссылочная прозрачность - результат применения любой функции зависит только от значения параметра, к которому её применили. По мне, так определение даже более чёткое, чем для ООП, с его инкапсуляцией, наследованием и полиморфизмом.
Я бы не хотел вступать в спор, тем более, что это не мои слова и я слабо подготовлен. Но я не согласен :)

Andrey
19.10.2018
10:02:17
Я бы не хотел вступать в спор, тем более, что это не мои слова и я слабо подготовлен. Но я не согласен :)
С чем? С тем, что под ФП есть стройное математическое обоснование, которое разработали в середина 20 века, а что такое ООП - каждый создатель языка понимает по своему? Так это факт, а факты - вещь упрямая.

dimiii
19.10.2018
10:07:41
у любителей ооп банда четырех это как святое писание
Под ооп точно так есть мат формализмы

Nick Senchurin
19.10.2018
10:07:44
хотя я не знаю о чем тут спорили, мне лень читать чатик выше, о чем спор, господа?)

Quantum Harmonizer
19.10.2018
10:08:57
Alexey
19.10.2018
10:09:01
С чем? С тем, что под ФП есть стройное математическое обоснование, которое разработали в середина 20 века, а что такое ООП - каждый создатель языка понимает по своему? Так это факт, а факты - вещь упрямая.
Ну с ооп то тоже все понятно вроде, есть объекты, которые общаются с друг другом сообщениями. А то что сейчас понимается под ООП это уже отдельная тема

Igor
19.10.2018
10:09:12
у любителей ооп банда четырех это как святое писание
Вчера у Венката было высказывание про эту книжку. Типа что это "бесполезный список рецептов, который не работает если следовать дословно")

Sergey
19.10.2018
10:09:36
сборник именованных костылей)

Nick Senchurin
19.10.2018
10:09:49
:D

Quantum Harmonizer
19.10.2018
10:11:34

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