@kotlin_lang

Страница 570 из 982
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
А почему хер разберешь? Выдать листуу человеческое название и норм
Ну я не согласен что имя списка спасёт, мне кажется глагол лучше характеризует обработку. Например будет там имя функции extractValue, как назвать список? Экстракреты?

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

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 пинать каждый может, во-вторых речь про вызов, а не про создание/переопределение функции

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 в котлине

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
collection literals тоже няшные
Что такое [1, 2, 3] — IntArray, Array<Int>, List<Int>, Set<Int>? Правильно сделали, что так можно только в аннотациях.

Руслан
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 голосовал :)

Руслан
03.03.2018
09:37:22
в котлине есть две отдельные концепции: интерфейсы и фукнциональные типы

зачем смешивать?

потому что в джаве сделали так из-за обратной совместимости?

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

Boris
03.03.2018
10:45:43
А функциональные типы как именовать нормально, через typealias? Кто-то считает SAM удобным и полезным. Например, я. И да, я джавист)
или через наследование, но я честно говоря тоже иногда скучаю по саму для котлиновских интерфейсов

Руслан
03.03.2018
11:11:25
А функциональные типы как именовать нормально, через typealias? Кто-то считает SAM удобным и полезным. Например, я. И да, я джавист)
почему нет? обычно в функциональных интерфейсах имя абстрактного метода не несет никакой смысловой нагрузки, типичные имена: apply, handle, wrap, etc

т.е. условно говоря если в джаве у меня был: 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
почему нет? обычно в функциональных интерфейсах имя абстрактного метода не несет никакой смысловой нагрузки, типичные имена: apply, handle, wrap, etc
Ну в общем-то да, согласен. Но если надо сделать нормальный интерфейс для Java-кода, придётся эти функциональные интерфейсы писать на Java :(

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

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

Admin
ERROR: S client not available

Mikhail
03.03.2018
13:02:21
А что на счёт кейза, который я выше описал?
Когда ты в функциональный интерфейс хочешь положить full-fledged class?

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
Так то у тебя ж не хаскелл, так что и функция может FIRE ALL THE MISSILES!!!11!
может, но надо постараться сделать замыкание

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

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
Решается созданием функции

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

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
Правильно ли я понимаю, что withContext { ... } то же самое что async { ... }.await()
Имхо это эквивалентно (возможно есть какие-то тонкости, о которых я не знаю)

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