Size: a a a

2019 October 05

MG

Matthew Good in Kotlin Start
yay it works now
источник

MG

Matthew Good in Kotlin Start
(had to do    operator fun <T> plus(vector: Vector<T>): Vector<Any> { aswell)
источник

MG

Matthew Good in Kotlin Start
if i have https://pl.kotl.in/ADAQTQVzw how can i make it dependant on both types instead of just one such that the result is the same (Pair<Double, Double>, or Pair<Float, Float>)
источник

MG

Matthew Good in Kotlin Start
for example, if i want to promote a Pair<Float, Double> or Pair<Double, Float> to a Pair<Double, Double> i would expect the output to be of type Pair<Double, Double> instead of Pair<Any, Any>
источник
2019 October 08

E🎸

El Mariachi 🎸 in Kotlin Start
Можно как-то сделать, чтоб к единственному полю класса можно было обращаться по имени объекта?
источник

AM

Andrew Mikhaylov in Kotlin Start
class MyClass(val field: FieldType): FieldType by field
источник

F

FOX in Kotlin Start
Как сделать второй дженерик (V) необязатльным? Второй метод реализуется по желанию, поэтому нет необходитмости передавать при имплементации туда что-то
interface DataProvider<T,V> {
   fun getData(file: T): T
   fun writeData(file: T, content: V){}
}
источник

Н

Напыщенное Эго in Kotlin Start
Это должно решаться значениями по-умолчанию для дженерик параметров, но пока что этой фичи нет в языке.
источник

AM

Andrew Mikhaylov in Kotlin Start
Изи.
interface DataProvider<T> {
   fun getData(file: T): T
}
interface WriteableDataProvider<T,V>: DataProvider<T> {
   fun writeData(file: T, content: V)
}
источник

F

FOX in Kotlin Start
Andrew Mikhaylov
Изи.
interface DataProvider<T> {
   fun getData(file: T): T
}
interface WriteableDataProvider<T,V>: DataProvider<T> {
   fun writeData(file: T, content: V)
}
А, согласно принципу разделения интерфейсов?
источник

AM

Andrew Mikhaylov in Kotlin Start
Дефолтные реализации методов в интерфейсах не стоит использовать для необязательного поведения, они хороши либо для поведения, для которого есть логичная реализация на основании других методов, но можно дать возможность его переопределить, либо же для ситуаций, когда есть пачка похожих методов с разными наборами параметров, которые вызывают друг друга от частного к общему, и хочется дать реализующему интерфейс альтернативу, какой уровень детализации ему интересен.
источник

AM

Andrew Mikhaylov in Kotlin Start
То есть
interface Collection<T> {
   val size: Int
   fun get(pos: Int): T
   fun getAll(): List<T> = List(size) { get(it) }
}
и
interface Listener {
   fun callback(arg1: Int, arg2: Float) {
       callback(arg2)
   }
   fun callback(arg2: Float) {}
}
(это может быть полезно, к примеру, для сохранения бинарной совместимости с пролыми версиями, где было меньше параметров)
источник

F

FOX in Kotlin Start
@r4zzz4k я вижу что ты знаешь, но вот объяснить нормально не сумел. Ну либо я не понял.
источник

AM

Andrew Mikhaylov in Kotlin Start
Ну тогда подождём человека, который сумеет.
источник

F

FOX in Kotlin Start
@r4zzz4k я понимаю, что тут можно следовать приницпу разделения интерфейсов из SOLID, и сделать два разных интерфейса для записи и чтения
источник

AN

Alexander Nozik in Kotlin Start
FOX
@r4zzz4k я вижу что ты знаешь, но вот объяснить нормально не сумел. Ну либо я не понял.
Для этого нужны два разных интерфейса
источник

AM

Andrew Mikhaylov in Kotlin Start
В твоём примере явно есть обособленное необязательное поведение. Такого не должно быть в интерфейсе.
источник

D

Denys in Kotlin Start
FOX
@r4zzz4k я вижу что ты знаешь, но вот объяснить нормально не сумел. Ну либо я не понял.
Вроде все просто.
источник

D

Denys in Kotlin Start
Даже с говорящими примерами.
источник

AN

Alexander Nozik in Kotlin Start
Andrew Mikhaylov
В твоём примере явно есть обособленное необязательное поведение. Такого не должно быть в интерфейсе.
да, и не надо смотреть на List из Java 🤓
источник