Articles of котлина

Репликация Котлина

fun fact(x: Int): Int{ tailrec fun factTail(y: Int, z: Int): Int{ if (y == 0) return z else return factTail(y – 1, y * z) } return factTail(x, 1) } Может ли кто-нибудь объяснить мне, как эта функция рекурсии работает в котлин?

Каков наилучший способ определения константы log TAG в Kotlin?

Я создаю свои первые классы Kotlin в своем приложении для Android. Обычно для ведения журнала я имею константу с именем TAG . Что я буду делать на Java: private static final String TAG = MyClass.class.getSimpleName(); Я знаю, что в классах Котлин я могу создать TAG следующим образом: private val TAG = MyClass::class.java.simpleName Это нормально для […]

Могут ли функции расширения быть вызваны «статическим» способом?

Возможно ли создать функцию расширения и вызвать ее так, как если бы она была статичной ? Например… fun System.sayByeAndExit() { println("Goodbye!") System.exit() } fun main(args: Array<String>) { System.sayByeAndExit() // I'd like to be able to call this } Я знаю, что образец кода не работает … Я понимаю, что функции расширения Котлина разрешены статически , […]

При использовании Java / Kotlin для программирования рекомендуется использовать рекурсию хвоста или итерационную версию? Есть ли разница в производительности?

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

Добавить функцию расширений в класс Math в kotlin

Я добавил функцию в класс Math в Kotlin, но я не мог ее использовать, я сделал это раньше с MutableList и это сработало, но я не могу сделать это с помощью класса Math . fun Math.divideWithSubtract(num1: Int, num2: Int) = Math.exp(Math.log(num1.toDouble())) – Math.exp(Math.log(num2.toDouble()))

пусть, также, применять, takeIf, takeUnless в Котлине

Я прочитал много документов Котлина об этих предметах. Но я не могу понять так ясно. Какая польза от Котлина, пусть также , возьмет и не возьмет без подробностей? Мне нужен пример каждого элемента. Пожалуйста, не публикуйте документацию Kotlin. Мне нужен пример в реальном времени и используйте случаи этих элементов.

Котлин: Рекурсия хвоста для взаимно-рекурсивных функций

Предположим, что я пишу код следующим образом: tailrec fun odd(n: Int): Boolean = if (n == 0) false else even(n – 1) tailrec fun even(n: Int): Boolean = if (n == 0) true else odd(n – 1) fun main(args:Array<String>) { // 🙁 java.lang.StackOverflowError System.out.println(even(99999)) } Как заставить Kotlin оптимизировать эти взаимно рекурсивные функции, чтобы я […]

Котлинская последовательность «пропускает» первые N записей

Как я могу «пропустить» первые N записей последовательности / списка kotlin? Я ищу котлинский эквивалент C # LINQ «skip» .

Почему я не могу ссылаться на вложенный объект из val или typealias, ссылающихся на объект?

Рассмотрим следующий код: object SomeObjectA { object SomeObjectB { val a = "test" } } val X = SomeObjectA typealias Y = SomeObjectA SomeObjectA.SomeObjectB // works X.SomeObjectB // error Y.SomeObjectB // error Я не могу ссылаться на вложенный объект (во внешнем объекте), используя val или typealias которые относятся к внешнему объекту. Зачем?

Доступ к функциям расширения Kotlin из Java

Можно ли получить доступ к функциям расширения из кода Java? Я определил функцию расширения в файле Kotlin. package com.test.extensions import com.test.model.MyModel /** * */ public fun MyModel.bar(): Int { return this.name.length() } Где MyModel является (сгенерированным) классом java. Теперь я хотел получить к нему доступ в своем обычном Java-коде: MyModel model = new MyModel(); model.bar(); […]