
Andrew
02.03.2018
19:50:38
То есть самое близкое, что есть к этому в Котлине — это "наследование" через делегацию (без понятия, как это по-умному называется). Но в свете того, что на деле пощупать мне это не доводилось, ничего хорошего (или плохого) я об этом рассказать не могу.

Anton
02.03.2018
19:54:42
это типа декоратор который?

Andrew
02.03.2018
19:55:25
Да, вероятно.

Google

Andrew
02.03.2018
19:55:58
Очевидно, эту фичу можно не только для декораторов использовать, просто надо попробовать :)

Ivan
02.03.2018
22:06:33
В общем как по мне лучше читать что происходит в момент обработки действия, а не держать в голове "ага, это у нас список функций, функция принимает инстанс, возвращает строку, так падажжи ёбана!"

Andrew
02.03.2018
23:40:06
Согласен, без вот этого вот явно написанного названия getCellValue я б хрен чё понял в коде ?
TableView<ServiceInstance> tableView = new TableView<>();
tableView.setCellValueProvider(new CellValueProvider() {
@Override String getCellValue(ServiceInstance entity) {
return entity.toString();
}
});

Ivan
03.03.2018
00:36:50
Ну во-первых java 6 пинать каждый может, во-вторых речь про вызов, а не про создание/переопределение функции

Kira
03.03.2018
07:06:41

Ruslan
03.03.2018
09:06:23
Что такое collection comprehension?

Руслан
03.03.2018
09:07:45
https://bkug.by/wp-content/uploads/2017/03/Future_Features_Cards.pdf

Kirill
03.03.2018
09:19:50
А где само голосование было?

Quantum Harmonizer
03.03.2018
09:24:21

Руслан
03.03.2018
09:24:39
И потом в интернетах было для всех

Kirill
03.03.2018
09:24:53
хм, как-то я это дело пропустил

Google

Kirill
03.03.2018
09:25:39
мне вот интересно кому могут быть нужны package-private и static в котлине

Igor
03.03.2018
09:25:57

Kirill
03.03.2018
09:26:23
ну я так-то джавист - мне не надо)
я б больше за subject in when топил

Sergey
03.03.2018
09:26:57
collection literals тоже няшные

Kirill
03.03.2018
09:27:05
ну такое
я с точки зрения реализации не уверен что это хорошая идея
т.е. будет потом как в груви
а так-то там много годных фич

Quantum Harmonizer
03.03.2018
09:30:46

Руслан
03.03.2018
09:32:13
Уже не помню за что голосовал год назад, но сегодня я бы дал голос за Inline classes/Value classes - для ежедневного кода, Unsigned arithmetic - для K/N и все. Против Static, SAM, array literals.

Quantum Harmonizer
03.03.2018
09:33:08
Я тоже против static голосовал :)

Kirill
03.03.2018
09:36:50

Руслан
03.03.2018
09:37:22
в котлине есть две отдельные концепции: интерфейсы и фукнциональные типы
зачем смешивать?
потому что в джаве сделали так из-за обратной совместимости?

Vladimir
03.03.2018
09:48:49
А функциональные типы как именовать нормально, через typealias?
Кто-то считает SAM удобным и полезным. Например, я. И да, я джавист)

Boris
03.03.2018
10:45:43

Руслан
03.03.2018
11:11:25
т.е. условно говоря если в джаве у меня был:
public interface HttpHandler {
void handleRequest(HttpServerExchange exchange) throws Exception;
}
то в котлине это просто:
typealias HttpHandler = (exchange: HttpServerExchange) -> Unit

Google

Руслан
03.03.2018
11:14:37
кажется что код почище, нету вот этой всей обвязки ненужной

Boris
03.03.2018
11:15:59
почему нет? обычно в функциональных интерфейсах имя абстрактного метода не несет никакой смысловой нагрузки, типичные имена: apply, handle, wrap, etc
да, но обычно речь как раз про те случаи, когда несет и интерфейс с одним методом хочется уметь инстанцировать просто. Мне вот не очень нравится наследование от функций и всё время бывает так, что есть простые или кастомные реализации которые хотелось бы прямо на ходу создавать и сложная реализация, которую я убираю в класс. И вот тут-то и получается, что или наследоваться от функции, что хреново, потому что тогда мой класс будет функцией, хотя на самом деле нет или инстанцировать через object : ClassName или делать обертку над инстанцированием в виде функции с лямбдой (я так и делаю)
тайпалиас вещь хорошая, но опять же наследоваться от него не вариант


Руслан
03.03.2018
11:18:21
Возвращаясь к примеру с хендлером ты говоришь что иногда у тебя хендлер это просто одна строчка которая не имеет зависимостей, а иногда это компонент в спринге. И вот интерфейсы тебе позволяют и сделать класс и лямбу. Так?

Boris
03.03.2018
11:18:32
честно говоря не вижу причин не делать эту фичу для котлиновских интерфейсов, да таких кейзов не очень много, но они есть и это интуитивно. Очень многие интуитивно ожидают, что это будет работать, но нет
через обертку в виде метода?

Руслан
03.03.2018
11:20:26
Эм, ну если про джаву говорить
Что позволяет SAM делать

Boris
03.03.2018
11:20:44
причем тут джава?

Руслан
03.03.2018
11:21:03
при том что обсуждается SAM для интерфейсов
и джаве он сделан, оттуда и пошел

Boris
03.03.2018
11:21:12
я вообще не помню когда их вместе использовал
не
мы обсуждаем сам для котлиновских интерфейсов
и я привел кейз
я на котлине обычно пишу
в том смысле, что или на котлине или не джаве :-)
и говорю о том, что это было бы удобно временами, когда тайпалиасы не справляются
и конечно всегда можно вместо создания класса создать жс-лайк класс из лямбды, но это тоже воркэраунд. Еще раз хочу сказать, что это не создает каких-то проблем, просто местами это было бы чуть проще.. если учесть, что для джава-интерфейсов это сделано и работает, даже не всегда знаешь котлин-интерфейс это или джавовский

Google

Igor
03.03.2018
11:29:24
Прямая трансляция выпуска подкаста Podlodka, где сравнивают Kotlin и Swift.
В гостях Николай Иготти - техлид Kotlin/Native и Шурик Бабаев - технический руководитель питерского офиса RedMadRobot.
https://www.facebook.com/podlodkacast/videos/489107968157664/

Vladimir
03.03.2018
11:44:46

Mikhail
03.03.2018
12:55:54
SAM для Kotlin - лишний, кмк. Ну или если его делать, то точно делать явное приведение

Alex
03.03.2018
13:00:06
А не напомните как было первоночально аргументированно отсутствие SAM интерфеса в котлине? отсутствие его в java 1.6?

Boris
03.03.2018
13:01:21

Admin
ERROR: S client not available

Mikhail
03.03.2018
13:02:21

Boris
03.03.2018
13:02:44

Mikhail
03.03.2018
13:03:05
тогда ты слишком смешиваешь функциональную парадигму с ооп
Должна быть черта между ними, чисто идеологически, ящитаю
и момент когда от Функционального типа приходят к интерфейсу - как раз она
Функциональный тип подразумевает, что у тебя нет никакого состояния, функция чиста как стеклышко и всякое такое
а под интерфейсом может скрываться что угодно, хоть FIRE ALL THE MISSILES!!!11!

Kirill
03.03.2018
13:11:58
Так то у тебя ж не хаскелл, так что и функция может FIRE ALL THE MISSILES!!!11!

Mikhail
03.03.2018
13:17:17
И я же написал, что подразумевает

Boris
03.03.2018
13:19:33

Mikhail
03.03.2018
13:20:44
Ладно, наверное я просто не сталкивался с этой болью

Boris
03.03.2018
13:23:09

Google

Mikhail
03.03.2018
13:23:36
Наверное поэтому и не добавляют)

Boris
03.03.2018
13:23:37
Решается созданием функции

Quantum Harmonizer
03.03.2018
13:43:07

Mikhail
03.03.2018
13:45:06
кстати, кто что думает про связочку dart/Flutter? слышал много восторженных отзывов, но чет везде его сравнивают с жабаскиптом и всякими React Nativе и прочими извратами

Nameless
03.03.2018
13:49:34

Igor
03.03.2018
13:50:24

Anton
03.03.2018
13:51:33
вот я щас пишу на флаттере у меня апк весит 26 мб с 2 экранами. мб три шейкинг будет после какой то особой сборки хз. и приложение медленное
я хз от кого были восторженные отзывы
от гуглеров которые делают флаттер может быть только
и хот релоад работает коряво
а дарт норм после джавы если котлин не видел)
120 фпс я вообще не вижу че то))

Жабра
03.03.2018
13:59:13
Правильно ли я понимаю, что withContext { ... } то же самое что async { ... }.await()
?

Igor
03.03.2018
14:01:43

Жабра
03.03.2018
14:04:52