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) } Может ли кто-нибудь объяснить мне, как эта функция рекурсии работает в котлин?
Я создаю свои первые классы 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 рекурсивные функции могут быть «болью в заднице» (иногда), и я стараюсь реализовать столько, сколько я могу использовать для хвостовой версии этой функции. Стоит ли беспокоиться об этом или делать это по-старому? Есть ли разница между этими […]
Я добавил функцию в класс Math в Kotlin, но я не мог ее использовать, я сделал это раньше с MutableList и это сработало, но я не могу сделать это с помощью класса Math . fun Math.divideWithSubtract(num1: Int, num2: Int) = Math.exp(Math.log(num1.toDouble())) – Math.exp(Math.log(num2.toDouble()))
Я прочитал много документов Котлина об этих предметах. Но я не могу понять так ясно. Какая польза от Котлина, пусть также , возьмет и не возьмет без подробностей? Мне нужен пример каждого элемента. Пожалуйста, не публикуйте документацию 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 записей последовательности / списка kotlin? Я ищу котлинский эквивалент C # LINQ «skip» .
Рассмотрим следующий код: object SomeObjectA { object SomeObjectB { val a = "test" } } val X = SomeObjectA typealias Y = SomeObjectA SomeObjectA.SomeObjectB // works X.SomeObjectB // error Y.SomeObjectB // error Я не могу ссылаться на вложенный объект (во внешнем объекте), используя val или typealias которые относятся к внешнему объекту. Зачем?
Можно ли получить доступ к функциям расширения из кода 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(); […]