Size: a a a

Kotlin Community

2021 January 08

QH

Quantum Harmonizer in Kotlin Community
Abdukarimov Vladislav
Концепции языка kotlin ? Программрования ?
всего, на самом деле) нужно понять и прочувствовать, как всё устроено
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
всего, на самом деле) нужно понять и прочувствовать, как всё устроено
++. Надо просто понять терминологию и методы. И это не быстро, минимум месяца два интенсивной работы. В целом не очень важно, с какого языка начинать. Котлин для этого вполне годится.
источник

L

LevT in Kotlin Community
Andrey Antipov
Возвращаясь к сравнению Скала и Котлин:
Если определить tail как val <T> List<T>.tail: List<T> get() = subList(1, size), то на Котлин код будет выглядеть так:
xs.zip(xs.tail).count { (a, b) -> a > b }
Кстати, давно хотел спросить практическую разницу от употребления пропертей vs функциий.
Теоретически-то я понимаю, "зачем всё это",
А вот на уровне новичка, почему вы мне посоветовали именно пропертю юзнуть?
источник

AA

Andrey Antipov in Kotlin Community
LevT
Кстати, давно хотел спросить практическую разницу от употребления пропертей vs функциий.
Теоретически-то я понимаю, "зачем всё это",
А вот на уровне новичка, почему вы мне посоветовали именно пропертю юзнуть?
источник

AA

Andrey Antipov in Kotlin Community
Тут есть рекомендации.
источник

AA

Andrey Antipov in Kotlin Community
В данном случае я использовал property, чтобы было как в Скале, но по рекомендациям должна быть функция, так как может бросить исключение для пустого списка
источник

L

LevT in Kotlin Community
Благодарю.

Prefer a property over a function when the underlying algorithm:
...
- returns the same result over invocations if the object state hasn't changed

Мне кажется, что вот это вот - официальная декларация недоверия функциям как потенциально "нечистым".
источник

AA

Andrey Antipov in Kotlin Community
Нет, вам только так кажется. Это просто соглашения, когда что лучше использовать, не более того
источник

L

LevT in Kotlin Community
Типа нехай их юзают заядлые императивщики, а "чистый" котлин возможен и без них
источник

AL

Alexander Levin in Kotlin Community
LevT
Типа нехай их юзают заядлые императивщики, а "чистый" котлин возможен и без них
Напоминание - Котлин не является игрушкой для функциональщиков, а вполне себе мультипарадигменный язык (что особенно актуально в контексте интеропа с джавой)

В связи с чем расчитывать на чистоту всего кода немного странно.


... Но если выбирать property vs function в контексте кода без сайд-эффектов, то обычно работает размышлять в контексте "если что-то обычно за константу можно посчитать, то проперти, иначе функция"
источник

L

LevT in Kotlin Community
Alexander Levin
Напоминание - Котлин не является игрушкой для функциональщиков, а вполне себе мультипарадигменный язык (что особенно актуально в контексте интеропа с джавой)

В связи с чем расчитывать на чистоту всего кода немного странно.


... Но если выбирать property vs function в контексте кода без сайд-эффектов, то обычно работает размышлять в контексте "если что-то обычно за константу можно посчитать, то проперти, иначе функция"
Помню-помню, и  ! "рассчитываю на чистоту "  😁

Здесь в ящичке достаточно инструментов, чтобы работать избирательно, и самому организовать себе столько чистоты сколько занадобится.
источник

D

Denys in Kotlin Community
источник

L

LevT in Kotlin Community
В скале List(1,2,3) рефакторится в List(1..10)
в котлине Range сопротивляется аналогичному.
Синтаксис слишком короткий, компилеру хинтов треба

(1..10).flatMap { x ->
   listOf(1..10).map { y -> (x to y) to x * y }
}
.toMap()

1) Как переписать чтобы убрать красноту?
2) ещё как-нибудь красиво сгенерить таблицу умножения
источник

M

Minmaxminor in Kotlin Community
Как исправить?
источник

QH

Quantum Harmonizer in Kotlin Community
LevT
В скале List(1,2,3) рефакторится в List(1..10)
в котлине Range сопротивляется аналогичному.
Синтаксис слишком короткий, компилеру хинтов треба

(1..10).flatMap { x ->
   listOf(1..10).map { y -> (x to y) to x * y }
}
.toMap()

1) Как переписать чтобы убрать красноту?
2) ещё как-нибудь красиво сгенерить таблицу умножения
listOf(1..10) заменить на (1..10)
«убрать красноту» — в корне ошибочная цель
источник

L

LevT in Kotlin Community
Quantum Harmonizer
listOf(1..10) заменить на (1..10)
«убрать красноту» — в корне ошибочная цель
Заменил (ещё до того, как сюда спросил), котлин компилеру тут всё равно хинты нужны (там, где скальному не нужны)
источник

QH

Quantum Harmonizer in Kotlin Community
LevT
Заменил (ещё до того, как сюда спросил), котлин компилеру тут всё равно хинты нужны (там, где скальному не нужны)
Что за мифические «хинты»? У меня всё работает.
источник

L

LevT in Kotlin Community
А у меня x: Int исправляет ситуацию, но только до полдороги
у:Int после этого уже ничего не лечит
источник

QH

Quantum Harmonizer in Kotlin Community
LevT
А у меня x: Int исправляет ситуацию, но только до полдороги
у:Int после этого уже ничего не лечит
Ошибка-то какая? Вроде сообщество котлинистов, а не телепатов)
источник

AA

Andrey Antipov in Kotlin Community
LevT
А у меня x: Int исправляет ситуацию, но только до полдороги
у:Int после этого уже ничего не лечит
Вы с типами разберитесь в вашем выражении
1..10 - объект типа IntRange
listOf(1..10)
- список из одного объекта типа IntRange.
То есть map будет ожидать лябмду типа (IntRange) -> T, а вы ему пытаетесь скормить лямбду типа (Int) -> T
Не думаю, что Скала подобный нонсенс логический проглотит
источник