Articles of котлина

Запечатанные внутренние классы

Я хотел бы создать закрытый класс классов, где каждый подкласс является внутренним классом некоторого внешнего класса. Я думал, что могу использовать закрытый внутренний класс для базы иерархии, например: class Outer { fun foo(): Int { // … } inner sealed class InnerBase(val i: Int) { fun sharedFunctionality() { println(foo() + i) } abstract fun doIt() […]

Как избежать ошибки StackOverFlow в Java / Kotlin / IntelliJ IDEA?

Я хочу сделать факториал BigInteger (в Котлине). С хвостом рекурсии я получаю ошибку StackOverFlow, когда я пытаюсь сделать 9000! , С нерекурсивной функцией я могу это сделать … но мне очень любопытно, как избежать такой ошибки. Вот мой код: import java.math.BigInteger fun tail_recursion_factorial(n: BigInteger, factorialOfN: BigInteger = BigInteger.valueOf(2)): BigInteger { return when(n){ BigInteger.ONE -> BigInteger.ONE […]

Kotlin – Как я могу получить доступ к моей новой функции расширения класса из другого файла

Я очень новичок в Котлине. Я хочу иметь возможность добавить функцию к моему абстрактному классу, поэтому, когда я определяю эту функцию, я могу вызвать ее для каждого дочернего элемента из этого класса (они наследуют абстрактный класс) Однако я хочу определить эти функции расширения в другом файле. Я не могу получить доступ к этим функциям, когда […]

Есть ли способ показать все функции расширения данного класса Kotlin в Intellij IDE?

Единственный способ, который я нашел до сих пор, – создать экземпляр данного класса, а затем использовать автозаполнение, чтобы увидеть все возможные функции. Очевидно, что этот способ громоздкий и занимает слишком много времени. Есть ли более простой способ увидеть все возможные функции?

Класс Kotlin, реализующий ошибку интерфейса Java

У меня есть интерфейс Java public interface SampleInterface extends Serializable { Long getId(); void setId(Long id); } и класс Котлина, который должен его реализовать open class ClazzImpl() : SampleInterface private val id: Unit? = null fun getId(): Long? { return null } fun setId(id: Long?) { } Однако я получаю ошибку компиляции: Класс ClazzImpl не […]

Сделать общий переход элемента между фрагментом и диалогом

Я делаю приложение для Android, которое создается только с одним действием. Я не хочу использовать действия. Все это фрагмент или что-то в этом роде. Для FullScreenDialogs, согласно материальному дизайну, я сделал диалог с полноэкранной темой. Теперь я хочу сделать анимации, подобные sharedElementTransition, из представления фрагментов в представление диалогов. Диалог просто вызывает setContentView(…) для инициализации макета. […]

Когда использовать методы расширения?

Я пишу код Котлина, и у него есть методы расширения, которые фактически аналогичны нормальным функциям, за исключением того, что используемый вами синтаксис выглядит как вызов метода экземпляра. Нормальная функция fun blah(x: Int) { println(x) } val f = blah(1) Метод расширения fun Int.blah() { println(this) } val f = 1.blah() Насколько я понимаю, методы расширения […]

Получить пару цифр из списка номеров в Котлин

У меня есть следующий список: [-1, -1, 2, 3, 4, 5, -1, 9, 10, 11, -1, -1, 23, 24, 25] Я хочу, чтобы список был ниже: [Pair(2,5), Pair(9,11), Pair(23,25)] Я мог бы сделать это, используя итерацию с временными переменными, такими как start и end . Но я ищу метод преобразования в List например, map , […]

Как получить доступ к членам класса с таким же именем в функции расширения в Kotlin android

Я новичок в kotlin для Android. и я хочу получить доступ к члену класса, который имеет такое же имя в функции расширения. например: var visibility = null //class level variable //EXTENSION FUNCTION fun ProgressBar.changeVisibleState(flag: Boolean) { if (flag) visibility = View.VISIBLE else visibility = View.INVISIBLE } как я могу получить доступ к visibility в методе […]

Kotlin: Как получить группу захвата первой строки, которая соответствует?

Начиная с строкиSequence Я бы хотел проверить, соответствует ли Regex, и если да, получите первый матч Кроме того, я хотел бы вернуть группу захвата из этого соответствия Regex Если бы мне было все равно, я бы сделал «первый» в строкеSequence, и, если он существовал, заново запустите регулярное выражение. val possibleMatch = input.lineSequence().first { myRegex.matches(it) } […]