@kotlin_lang

Страница 511 из 982
Даниил
26.01.2018
08:13:25
ну средненький, для мейнстрима хороший, но в плане системы типов до хаскеля ему далеко конечно)

Vitalii
26.01.2018
08:13:31
А Котлин — не нормальный?)
Говорят, котлин — это плагин.

balolam
26.01.2018
08:13:52
нет
Зачем вам тогда там sealed класс?

Google
Artem
26.01.2018
08:14:10
Много чего говорят. Только вот говорить "нормальный" о том, к чему ты привык — ну такое себе

Даниил
26.01.2018
08:14:40
Нет, вы ставите некорректный вопрос исходя из некорректной задачи, которая получилась, ведь вы скорее всего пошли не верным путём.
ещё раз - это не я придумал, это нормальная практика в языках с которых Kotlin как раз и копирует концепцию sealed классов и data классов, с чего вдруг она неверная?

Igor
26.01.2018
08:14:49
я к тому что в нормальных языках это делается нормально
Я все таки на уловил, чем тебя не устраивает None сделаный через object<Nothing> ? P.S. ну и Option это очевидное "не нужно" в котлине

Artem
26.01.2018
08:15:25
И пытаться делать в одном языке так, как вы делали в другом — плохой тон. Надо делать так, как позволяет делать это текущий язык

Даниил
26.01.2018
08:15:27
Я все таки на уловил, чем тебя не устраивает None сделаный через object<Nothing> ? P.S. ну и Option это очевидное "не нужно" в котлине
ненужным сабтайпингом это не катастрофа, конечно, суть в том что приходится делать чуть-чуть не то что нужно было, просто потому что создатели языка решили что пустые дата классы никому не нужны

Igor
26.01.2018
08:16:00
ну средненький, для мейнстрима хороший, но в плане системы типов до хаскеля ему далеко конечно)
? ну ты сравнил (а вообще это и делает его мейнстримовые, в отличие от скалы)

Даниил
26.01.2018
08:16:07
И пытаться делать в одном языке так, как вы делали в другом — плохой тон. Надо делать так, как позволяет делать это текущий язык
плохой тон - депрекейтить фичи без надобности мотивируясь какими-то очень странные соображениями

Даниил
26.01.2018
08:16:43
? ну ты сравнил (а вообще это и делает его мейнстримовые, в отличие от скалы)
так это ведь даже было в котлине, и это не создавало бы никаких проблем абсолютно ни с чем, ни с изучением, ни с интеропом с джавой, ну просто вообще ни с чем, с чего депрекейтить-то?

Artem
26.01.2018
08:16:46
плохой тон - депрекейтить фичи без надобности мотивируясь какими-то очень странные соображениями
Ну смотрите — вы такой один скорее всего на весь этот чат. Стоит этот депрекейт этого? Значит стоит)

balolam
26.01.2018
08:17:47
так это ведь даже было в котлине, и это не создавало бы никаких проблем абсолютно ни с чем, ни с изучением, ни с интеропом с джавой, ну просто вообще ни с чем, с чего депрекейтить-то?
Ещё, очень часто было сказано, что если у вас что-то не выходит на Котлин то вспомните, что это JVM язык.... напишите это на Scala, Java и тд

Даниил
26.01.2018
08:17:52
Я думаю, что тут была попытка не наплодить инструментов для создания нечитаемого кода, с кучей пазлеров
ну смотри, если я всё-таки захочу сделать так как хочу - вот в этом случае читабельность пострадает

Google
Artem
26.01.2018
08:18:11
Если его решили сделать депрекейтед, значит так решили. Котлин делает не два школьника после уроков, а за ним целая компания. Решили — надо. Но при этом успевают и к коммьюнити прислушаться

Объясните, почему вам это нужно и изложите красиво на гитхабе. Вдруг прислушаются (нет)

balolam
26.01.2018
08:19:49
И зачем плодить "дополнительные вопросы для собеседований" делая язык менее очевидным, если вам вот никто не запрещает написать то что вам нужно не на Kotlin

Даниил
26.01.2018
08:21:44
мне как раз кажется что это более очевидно, чем наличие какого-то немотивированного исключения из общего принципа ну да ладно

balolam
26.01.2018
08:23:31
Ответьте на вопрос, зачем дата класс у которого нет полей для которых нужно что-то генерировать?

Даниил
26.01.2018
08:23:53
чтобы генерировался правильный equals и toString

очевидно же

конечно, я могу это руками сделать

только вот это выглядит как усложнение а не упрощение

разве нет?

balolam
26.01.2018
08:26:35
чтобы генерировался правильный equals и toString
Если нет полей, то под что генерить?

Даниил
26.01.2018
08:26:57
ну я же всё написал уже

Dummy() == Dummy() всегда true

Dummy().toString() == "Dummy()"

balolam
26.01.2018
08:28:04
Тогда вам в object классы или enum

Даниил
26.01.2018
08:28:36
Тогда вам в object классы или enum
объекты не могут быть полиморфными enum вообще мимо)

Bogdan
26.01.2018
08:28:49
Можете сделать в сайлед классе базовые реализации

То строго это класснаме

Google
Bogdan
26.01.2018
08:29:25
Еквелс проверять класы

Даниил
26.01.2018
08:29:53
да могу-то конечно

Bogdan
26.01.2018
08:29:56
И котлин не ломаете и вам неплохо

Даниил
26.01.2018
08:30:02
я же не говорю что нельзя в принципе это обойти

я просто ругаюсь на очень странно мотивированный депрекейт

который не упрощает а только усложняет

balolam
26.01.2018
08:30:28
https://kotlinlang.org/docs/reference/data-classes.html

Даниил
26.01.2018
08:30:35
хотя вроде как само наличие возможности сделать так никому не мешало если кому-то эта фича не нужна была

Bogdan
26.01.2018
08:30:54
Ну и в чем проблема, вам лень два метода написать?

balolam
26.01.2018
08:31:06
Ваша понимание дата классов, как по мне, сильно отличается от того что было заложено разработчиками

Даниил
26.01.2018
08:31:59
Ваша понимание дата классов, как по мне, сильно отличается от того что было заложено разработчиками
разработчики ничего сами не придумали, они посмотрели на более развитые языки и сделали похоже

balolam
26.01.2018
08:32:12
Или вы относитесь к тем людям, которые считают что для каждого их частного кейса у них должен быть специальный инструмент в языке

Bogdan
26.01.2018
08:32:33
А можно чела кликнуть

Даниил
26.01.2018
08:32:39
Ну и в чем проблема, вам лень два метода написать?
да я просто рефлексирую на тему "нахуя было депрекейтить"

Bogdan
26.01.2018
08:32:40
Я не злой

Но если не нравится язык не юзай

Даниил
26.01.2018
08:34:07
Тогда вам в issue)
ну я конечно может напишу но язык уже в стабильной версии, сейчас-то даже если не учитывать всякие разногласия протолкнуть что-то в него сложнее наверное

Vladimir
26.01.2018
08:36:10
ну я конечно может напишу но язык уже в стабильной версии, сейчас-то даже если не учитывать всякие разногласия протолкнуть что-то в него сложнее наверное
Учитывая, что это ничего не ломает, это не должно быть сложно. Но нужна мотивация. И конечно же наверняка были причины, по которым сделали именно так.

Даниил
26.01.2018
08:38:23
Учитывая, что это ничего не ломает, это не должно быть сложно. Но нужна мотивация. И конечно же наверняка были причины, по которым сделали именно так.
я почитал обсуждение на форуме, причины честно говоря весьма неубедительные как по мне про ситуацию с дженериками там кто-то написал, но на этом обсуждение закончилось, никто ничего на это не ответил в общем наверное как будет время оформлю issue как надо с развёрнутыми примерами и мотивацией, мало ли, за спрос денег не берут)

Google
Angelina
26.01.2018
09:43:30
Всем привет! Проводим в Ростове-на-Дону митап со свободным входом, есть возможность послушать о Kotlin от Романа Елизарова - первого, так сказать, лица :) Вход,повторюсь, свободный, угощаем пиццей и напитками ? Вся инфа здесь: https://vk.com/devexperts?w=wall-35463211_453

Культиватор Джо
26.01.2018
10:02:31
Господа, есть вопрос по форматированию. Есть какие-то правила для наличия/отсутствия отступа для полей или методов в классе.





Евгений
26.01.2018
10:04:52
эм, это как договоритесь в команде

Vitalii
26.01.2018
10:04:56
Вкусовщина.

Культиватор Джо
26.01.2018
10:08:29
То есть стайлгайда по этому вопросу нет?

Ок.

Igor
26.01.2018
10:21:19
Конечно же так class Example(private val digit: Int) { fun plus(x: Int): Int = dight + x fun minus(x: Int): Int = digit - x }

Культиватор Джо
26.01.2018
10:21:59
Конечно же так class Example(private val digit: Int) { fun plus(x: Int): Int = dight + x fun minus(x: Int): Int = digit - x }
Конечно же да, но это в этом конкретном случае. Если у тебя больше 2 строк кода, то так ты писать не будешь.

Sergey
26.01.2018
10:22:21
в kotlin style guide пустая строка требуется только если заголовок класса содержит несколько строк

class MyFavouriteVeryLongClassHolder : MyLongHolder<MyFavouriteVeryLongClass>(), SomeOtherInterface, AndAnotherOne { fun foo() {} }

Sergey
26.01.2018
11:02:38
: Int лишние)
если это библиотченый код и public, то я бы оставил тип. иначе при любом изменении в код после = поменяется api

Sergey
26.01.2018
11:03:07
если это библиотечный код то там будет интерфейс с явными типами

Sergey
26.01.2018
11:03:48
согласен ? но интерфейс не всегда возможен, из за того что нельзя final и inline

Igor
26.01.2018
11:13:37
: Int лишние)
Да вот не знаю, хинты IDEA занимают столько же места. Не понятно в чем профит.

Google
Sergey
26.01.2018
11:13:49
хинты выключить можно)

Vitalii
26.01.2018
11:17:18
Да вот не знаю, хинты IDEA занимают столько же места. Не понятно в чем профит.
Есть сектанты, которые иногда открывают котлин-код вне идеи.

Ivan
26.01.2018
11:18:21
Sergey
26.01.2018
11:18:21
Да вот не знаю, хинты IDEA занимают столько же места. Не понятно в чем профит.
как минимум в том что не нужно вручную поддерживать актуальность типа при изменении выражения

Igor
26.01.2018
11:20:03
Ну такое, это же работает только в expression-functions. А вообще люблю конечно это дело в ML языках, там типы везде выводятся.

Sergey
26.01.2018
11:23:16
Ты чё кодревью делаешь? Оно для слабых
fun plus(x: Int): Int = dight + x даже не знаю как тут ревьювить без возвращаемого типа

Konstantine
26.01.2018
11:26:58
Есть у нас какой-то изи способ быстро инпут стрим в массив байтов переделать?

Igor
26.01.2018
11:28:36
Есть у нас какой-то изи способ быстро инпут стрим в массив байтов переделать?
инпут стрим? Знаю что можно int[] -> byte[] перегнать через IntBuffer

Sergey
26.01.2018
11:32:05
InputStream.readBytes - есть такое в kotlin std lib

Ivan
26.01.2018
11:33:09
нет ?
Вот это печаль

Kirill
26.01.2018
11:34:47
А upsource не умеет?
он зато в навигацию по коду умеет (но не всегда и не очень точно)

Sergey
26.01.2018
11:34:59
https://youtrack.jetbrains.com/issue/UP-7810

Ivan
26.01.2018
11:35:18
Andrew
26.01.2018
17:08:41
На самом деле присоединился бы к вопросу касательно data class без полей, ибо сейчас у меня есть sealed class с пачкой наследников, часть из которых data-классы (надо сравнивать по полям), часть -- object-ы, и для последних .toString() выдаёт qualified name и instance id, которые выглядят так себе -- хотелось бы видеть MyClass() вместо com.example.company.project.package.MyClass@601d768d. Писать на каждый object ради этого .toString() лень.

Не то, чтобы это мешало решать задачи, как получается у @KolesnichenkoDS, но всё ещё.

Nikolay
26.01.2018
17:21:21
создай обычный класс и переопредели equals и hashCode

class None : SomeSealedClass() { override fun equals(other: Any?) = javaClass == other?.javaClass override fun hashCode() = javaClass.hashCode() }

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