
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

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

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

Alexey
18.10.2018
15:25:40

Костя
18.10.2018
15:26:44
Кароч вкусовщина

Anna
18.10.2018
15:27:05

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

Bogdan
18.10.2018
15:53:48

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

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

Alexey
18.10.2018
16:10:31

Quantum Harmonizer
18.10.2018
16:11:20

dimiii
18.10.2018
16:11:53

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

Quantum Harmonizer
18.10.2018
16:37:46

Alexey
18.10.2018
16:45:22

Bogdan
18.10.2018
16:48:03

Alexey
18.10.2018
16:50:12

Bogdan
18.10.2018
17:02:31
хотя, когда 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

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

OlegKrikun
18.10.2018
19:54:35

Жабра
18.10.2018
20:25:48

Bogdan
18.10.2018
20:36:27

Жабра
18.10.2018
20:37:01

Bogdan
18.10.2018
20:37:59

Жабра
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

Google

Bogdan
18.10.2018
20:59:59

Boris
18.10.2018
21:00:37

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

dimiii
19.10.2018
10:06:03

Nick Senchurin
19.10.2018
10:06:45
у любителей ооп банда четырех это как святое писание

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

Igor
19.10.2018
10:09:12

Alexey
19.10.2018
10:09:22

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

Nick Senchurin
19.10.2018
10:09:49
:D

Quantum Harmonizer
19.10.2018
10:11:34