Size: a a a

Kotlin Community

2020 August 17

AN

Alexander Nozik in Kotlin Community
или даже list x 3 если неймется
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Вот предположим у вас вектор - итерабль. А теперь складываем два вектора, что будет?
override operator fun <T : Iterable<*>> T.times(...): T = ...
источник

LS

Lev Shagalov in Kotlin Community
Alexander Nozik
list repeat 3
Будет Каменный топор повторить 3. Лучше умножить.
Нет, это не майнкрафт)
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
override operator fun <T : Iterable<*>> T.times(...): T = ...
Будет лист из двух векторов, потому что для итераблей плюс уже определен
источник

AL

Alexander Levin in Kotlin Community
саша сок #KotlinGang
override operator fun <T : Iterable<*>> T.times(...): T = ...
Не тот язык, у вас такой дженерик не особо выйдет инстанциировать.
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Будет лист из двух векторов, потому что для итераблей плюс уже определен
ну там можно разный "+" импортировать
источник

AN

Alexander Nozik in Kotlin Community
Lev Shagalov
Будет Каменный топор повторить 3. Лучше умножить.
Нет, это не майнкрафт)
Я в смысле игр потребитель, а не производитель
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
ну там можно разный "+" импортировать
Грабли чувствуете?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Levin
Не тот язык, у вас такой дженерик не особо выйдет инстанциировать.
а вот тут да, но в примере можно
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Грабли чувствуете?
ну у листа нет *
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
ну у листа нет *
У листа нет, а если на этом что-то строить, а если кто-то еще плюс переопределит для надтипа?
источник

с#

саша сок #KotlinGang... in Kotlin Community
то есть рекомендуете вообще не юзать оператор функции ?
источник

с#

саша сок #KotlinGang... in Kotlin Community
просто вот в случае с листом, который нужно умножать, это же логичное поведение, единственно верное, что ещё может произойти во время умножения с листом, кроме репита
источник

AL

Alexander Levin in Kotlin Community
Alexander Nozik
У листа нет, а если на этом что-то строить, а если кто-то еще плюс переопределит для надтипа?
Ну всмысле небольшой велосипед для скрипта вряд ли станет основой для чего-то крупного. Т.е. в общем случае я скорее за repeat как и писал выше, но скрипты это отдельная история.
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
то есть рекомендуете вообще не юзать оператор функции ?
Рекомендую сильно себя ограничивать в этом смысле, осбоенно с арифметическими операциями. Я уже пару раз напарывался и с плюсом и с to. С последним даже не пару
источник

AL

Alexander Levin in Kotlin Community
саша сок #KotlinGang
просто вот в случае с листом, который нужно умножать, это же логичное поведение, единственно верное, что ещё может произойти во время умножения с листом, кроме репита
Зависит откуда вы пришли.

Groovy: println([1, 2, 3] * 3) - [1, 2, 3, 1, 2, 3, 1, 2, 3]
R: print(c(1,2,3) * 3) - [1] 3 6 9
источник

AN

Alexander Nozik in Kotlin Community
Собственно решение ограничить перегрузку операторов было не просто так. И даже в самих котлиновских либах напоролись с унарным плюсом. Теперь его выпиливают потихоньку
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Рекомендую сильно себя ограничивать в этом смысле, осбоенно с арифметическими операциями. Я уже пару раз напарывался и с плюсом и с to. С последним даже не пару
override operator fun <T : List<*>> T.times(count: Int): T = mutableListOf().apply {
   for(i in 1..count)
       addAll(this)
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
такая функция не жизнеспособна ?
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
override operator fun <T : List<*>> T.times(count: Int): T = mutableListOf().apply {
   for(i in 1..count)
       addAll(this)
}
Это сломается
источник