@kotlin_lang

Страница 837 из 982
Alexander
29.08.2018
17:03:46
Куда?

Maxim
29.08.2018
17:04:15
А в каком возрасте уже поздно на стажировки?
В таком возрасте когда признаков жизни меньше чем у морского огурца.

Bogdan
29.08.2018
17:04:56
Куда?
ИТ, программирование, сейчас интересуюсь нечеткой логикой и объеденения ее с нейронкой и генетическими алгоритмами

Alexander
29.08.2018
17:07:01
У меня в дальних планах разработка вероятностной логики на основе мат-стата и информации Фишера (есть кое-какие наработки) и использования этой штуки для анализа экспериментальных данных. Но это когда я распихаю студентов таким образом, что они зарабатывали много денег и можно было заниматься всякой возвышенной фигней.

Google
Alexander
29.08.2018
17:07:05
Но это офтоп

Galia
29.08.2018
17:07:25
В таком возрасте когда признаков жизни меньше чем у морского огурца.
Звучит как человек в коме ? Что вы имеете в виду под признаками жизни?

Maxim
29.08.2018
17:09:42
Звучит как человек в коме ? Что вы имеете в виду под признаками жизни?
Признаками жизни являются показатели состояния человеческого организма, позволяющие установить, что он жив.

Andrew
29.08.2018
17:10:07
Звучит как человек в коме ? Что вы имеете в виду под признаками жизни?
Это вот как неделя перед экзаменом, но несколько лет подряд. Не заморачивайтесь раньше времени :)

Alexander
29.08.2018
17:10:14
Она по-моему спрашивает о том, является ли сидение в котлин-чатике признаком жизни.

Не является. Можно печатать не приходя в сознание.

Andrew
29.08.2018
17:11:19
А иногда только на это сил и хватает. Но это действительно оффтоп.

Sergey
29.08.2018
17:23:34
https://github.com/JetBrains/kotlin/releases/tag/v1.3-M2

Mikhail
29.08.2018
17:40:35
Кстати, есть ли какое нибудь обьяснение, почему нет интерфейса для объектов с componentN? Можно было бы очень классные вещи делать

Igor
29.08.2018
17:47:06
Еще бы полиморфизма к ним (что бы можно было говорить "мне нужен тип с componentN", неважно какой)

Quantum Harmonizer
29.08.2018
17:49:45
Кстати, есть ли какое нибудь обьяснение, почему нет интерфейса для объектов с componentN? Можно было бы очень классные вещи делать
Потому что фичи языка используют ключевое слово operator + специальное имя, это довольно логично.

Google
Mikhail
29.08.2018
17:52:02
Например?
Например Component<A, B, C>

Как Tuple<A, B, C>

Bogdan
29.08.2018
17:52:48
Например Component<A, B, C>
опять туплов хотите

Mikhail
29.08.2018
17:53:36
Тогда бы можно было утроить настоящий паттерн-матчинг, мапперы и всякие штуки для сериализации и иных манипуляций с дата классами

Va
29.08.2018
17:53:54
Как Tuple<A, B, C>
Ну сделай его датакласом

Mikhail
29.08.2018
17:55:15
Ну сделай его датакласом
Ну допустим я хочу сделать функцию, которая проверяет, является ли второе поле стрингой со значением "1"

Mikhail
29.08.2018
17:56:20
Если бы был интерфейс Component2<A, B> можно было бы сделать value.component2() == "1"

А так надо лезть в реылексию, хотя на самом деле все методы уже есть

Точно также всякое копирование

Или шифрование

Или маппинг

Va
29.08.2018
17:57:30
Mikhail
29.08.2018
17:59:05
Так сделай так же для дата класса )
Т.е. для каждого дата класса заимплементить интерфейс, руками делегируя component1() = component1()?

Может еще toString руками написать и hashcode?

Va
29.08.2018
18:00:13
Зачем, если component1 тебе сразу вернёт то, что нужно ?

Ты желаешь экстеншн к классу data class SomeClass

И там дергаешь нужные тебе методы

Впрочем, можно сразу к полям )

Mikhail
29.08.2018
18:02:21
Я хочу ко всем data class, рассматривая их как tuple

Google
Va
29.08.2018
18:02:26
А тебя type erasure не смущает ?

Mikhail
29.08.2018
18:03:17
А чем оно должно меня смущать?

Va
29.08.2018
18:04:29
Как ты собрался узнавать тип того, что вернёт component ?

Или работать как с Any ?

Mikhail
29.08.2018
18:05:19
Va
29.08.2018
18:05:38
Bogdan
29.08.2018
18:05:55
А type erasure ?)
а вывод типов ?

Va
29.08.2018
18:06:00
Это не для jvm задача немного )

Bogdan
29.08.2018
18:06:04
на уровне компилятора все ок

Va
29.08.2018
18:06:05
а вывод типов ?
Каким образом ?

Mikhail
29.08.2018
18:06:26
data class User(name: String, email: Email) : Component2<String, Email>

Quantum Harmonizer
29.08.2018
18:06:43
class Triple<T, U, V> : Component1<T>, Component2<U>, Component3<V> ?

Bogdan
29.08.2018
18:06:49
Каким образом ?
А при чем тут затираение, если проверка будет на уровне компиляции ?

Mikhail
29.08.2018
18:07:00
И на этапе компиляции все известно?

Bogdan
29.08.2018
18:07:20
Va
29.08.2018
18:07:32
И на этапе компиляции все известно?
Тогда почему бы не воспользоваться кодогеном ?

Quantum Harmonizer
29.08.2018
18:07:47
компилятор — и есть кодген

Mikhail
29.08.2018
18:08:08
class Triple<T, U, V> : Component1<T>, Component2<U>, Component3<V> ?
Скорее так CompnentN<T1, ..., TN> : ComponentN-1<T1, ..., TN-1>

Тогда почему бы не воспользоваться кодогеном ?
Потому что я пишу на языке, в котором компилятор и так генерит componentN(), я просто хочу интерфейс для этого

Google
Va
29.08.2018
18:09:05
Ну, если ты хочешь единое что-то для всего, ты утыкаешься в рантайм проблемы. Если ты заранее опишешь типы – чем использовать kotlinpoet хуже ?

Quantum Harmonizer
29.08.2018
18:09:42
Скорее так CompnentN<T1, ..., TN> : ComponentN-1<T1, ..., TN-1>
мне не нравится тем, что появляются bridge-методы ?‍♂️

Va
29.08.2018
18:10:58
Когда используешь листы, не натыкаешься на рантайм-проблемы?
Я в листах использую статическое количество дженериков и я не пишу методы для модификации данных внутри листа

Я пишу маппер функции, которые его модифицируют, задавая тип явно

Va
29.08.2018
18:13:05
Допустим, сгенерился интерфейс Component<T1,T2> Что с ним дальше делать ?) Мб я просто недопонял проблемы

Admin
ERROR: S client not available

Mikhail
29.08.2018
18:13:42
мне не нравится тем, что появляются bridge-методы ?‍♂️
Тогда мы затребуя Component2 не будем знать тип первого компонента(

Quantum Harmonizer
29.08.2018
18:13:45
Допустим, сгенерился интерфейс Component<T1,T2> Что с ним дальше делать ?) Мб я просто недопонял проблемы
интерфейсы должны быть скомпилированы заранее, как это сделано для функций

Dmitriy
29.08.2018
18:14:04
Привет, а этим Triple или как-то иначе можно описать такой тип для json массива с разными типами данных ["string", 33, false]?

Массив фиксированной длины

Quantum Harmonizer
29.08.2018
18:14:55
ну, Triple<String, Int, Boolean>?

Mikhail
29.08.2018
18:20:44
Va
29.08.2018
18:21:43
И чем интерфейс лучше чем просто дата класс ?

Bogdan
29.08.2018
18:23:49
даже гугл не поможет

Google
Va
29.08.2018
18:24:21
Отличное объяснение )

Bogdan
29.08.2018
18:24:44
Отличное объяснение )
ну какой вопрос...

Maxim
29.08.2018
18:25:14
И чем интерфейс лучше чем просто дата класс ?
Интерфейсов можно имплементить много, а класс наследовать только один))

Mikhail
29.08.2018
18:25:25
И чем интерфейс лучше чем просто дата класс ?
Тем что ты не сможешь сделать функцию match для всех data class не копируя ее как в go

Ты точно на котлине пишешь?

Bogdan
29.08.2018
18:25:41
И чем интерфейс лучше чем просто дата класс ?
жестко привязываешься к типу, не можно писать общию логику для разнух туплов

Ты точно на котлине пишешь?
походу ни начем не пишет

Quantum Harmonizer
29.08.2018
18:26:27
Ну например матчер для when, User.match("jakewharthon", Email("jw@gmail.com"))
придётся указать компонент, типа match3

Bogdan
29.08.2018
18:26:46
жестко привязываешься к типу, не можно писать общию логику для разнух туплов
+ создавать класс для "нового" тупла, нельзя наследоватся (вопрос нада ли)

Mikhail
29.08.2018
18:26:55
придётся указать компонент, типа match3
Нуу, ad-hoc полиморфизм вроде бы в котлине никто не удалял

Va
29.08.2018
18:26:58
Может тогда стоит переюзать датакласс ?

Mikhail
29.08.2018
18:27:09
Va
29.08.2018
18:29:05
как ?
Ну, если ты пишешь экстеншн к Component<String, Int> то это ничем не лучше, чем если ты сделаешь экстеншн к дата классу StringInt

Quantum Harmonizer
29.08.2018
18:29:52
Va
29.08.2018
18:30:23
А что за функцию ты хочешь написать для Component<T1, T2>, можно пример ?

Bogdan
29.08.2018
18:30:56
а теперь у меня есть функция, она принимает тупл, и что-то там делает, ей все равно что там реально за объект, ей важен интерфейс который предоставляет данный объект

Bogdan
29.08.2018
18:32:24
принемает тип где должен первым инт(ид)
но этот пример не совсем удачный

Va
29.08.2018
18:33:01
То есть, ты в общем случае начинаешь упираться на тип, erasure всё сломает

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