Size: a a a

Kotlin Community

2020 May 19

AN

Alexander Nozik in Kotlin Community
Напыщенное Эго
Это не тот же самый его материал, который уже есть в сети? Про jupiter, zeppelin и идеевский плагин...
Не знаю пока. Содержание не согласовывали, только тему. Я подозреваю, что будет частично дублировать то, что было на котлинконфе, но с тех пор все-таки несколько месяцев прошло, там довольно большой прогресс по kotlin-jupyter.
источник

QH

Quantum Harmonizer in Kotlin Community
Andrei Shikov
я бы сделал интерфейс Common
sealed class там имхо совсем не обязателен
Как я буду определять, DataType это или Custom? А если мне передадут object : Common {}?
источник

QH

Quantum Harmonizer in Kotlin Community
Iaroslav Orlov
нельзя чуточку наплевать на типобезопасность и просто принимать Any, а потом разбираться?
Я почти так и сделал, но потом осознал, что есть публичные API, которые должны принимать такую штуку.
источник

AS

Andrei Shikov in Kotlin Community
Quantum Harmonizer
Как я буду определять, DataType это или Custom? А если мне передадут object : Common {}?
interface Common<DT> {
   val type: DT
}

¯\_(ツ)_/¯
источник

QH

Quantum Harmonizer in Kotlin Community
Andrei Shikov
interface Common<DT> {
   val type: DT
}

¯\_(ツ)_/¯
И опять приходим к тому, что DataType<T, SELF>
источник

AS

Andrei Shikov in Kotlin Community
Quantum Harmonizer
И опять приходим к тому, что DataType<T, SELF>
не совсем, т.к. мы не наследуем DataType от Common
источник

QH

Quantum Harmonizer in Kotlin Community
Andrei Shikov
не совсем, т.к. мы не наследуем DataType от Common
А, точно. Спасибо, это вариант.
источник

IO

Iaroslav Orlov in Kotlin Community
Quantum Harmonizer
Я почти так и сделал, но потом осознал, что есть публичные API, которые должны принимать такую штуку.
эх
источник

AS

Andrei Shikov in Kotlin Community
Quantum Harmonizer
И опять приходим к тому, что DataType<T, SELF>
Единственное, надо следить вручную, что все элементы внутри sealed класса его унаследовали
Но это лучше чем везде звездочки вместо SELF проставлять 🙂
источник

QH

Quantum Harmonizer in Kotlin Community
Type parameter R of 'Function' has inconsistent values: List<T>, MutableList<T>

Кто из нас неправ, я или компилятор?)
источник

IO

Iaroslav Orlov in Kotlin Community
а вам точно нужно наследоваться от лямбды?
источник

AS

Andrei Shikov in Kotlin Community
Quantum Harmonizer
Type parameter R of 'Function' has inconsistent values: List<T>, MutableList<T>

Кто из нас неправ, я или компилятор?)
ты 🙂
компилятор всегда прав
источник

IO

Iaroslav Orlov in Kotlin Community
Quantum Harmonizer
Type parameter R of 'Function' has inconsistent values: List<T>, MutableList<T>

Кто из нас неправ, я или компилятор?)
советую просто переопределить invoke
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
Type parameter R of 'Function' has inconsistent values: List<T>, MutableList<T>

Кто из нас неправ, я или компилятор?)
там проекции нет, так что компилятор.
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Orlov
советую просто переопределить invoke
хороший совет, особенно учитывая, что наследование от функциональных типов не работает в K-JS
источник

QH

Quantum Harmonizer in Kotlin Community
Iaroslav Orlov
советую просто переопределить invoke
Советую уяснить, что такое лямбда и чем она отличается от функционального типа.
Я реализовал первый попавшийся интерфейс для примера.
источник

QH

Quantum Harmonizer in Kotlin Community
Alexander Nozik
там проекции нет, так что компилятор.
Есть, Function<out R>, Function1<in T, out R>
источник

QH

Quantum Harmonizer in Kotlin Community
источник

AS

Andrei Shikov in Kotlin Community
Quantum Harmonizer
Есть, Function<out R>, Function1<in T, out R>
ну out List<R> и out MutableList<R> все таки разные bounds для типов
источник

QH

Quantum Harmonizer in Kotlin Community
Andrei Shikov
ну out List<R> и out MutableList<R> все таки разные bounds для типов
Это всё же параметры, а не баунды.
Они-то разные, просто тут моё ожидание от variance встретилось с деталью реализации компилятора. Я так думаю.
источник