Intereting Posts
Функция Котлина: Требуемая единица измерения? Найдено Int Pass facebook AccessToken by Retrofit Мне нужно знать, почему? и если я изменю эту строку на "println (name + two)" ошибка решена? Создание списка из ResultSet Kotlin – Список сортировки с использованием форматированной строки даты (функциональной) Как создать запрос hql с левым соединением, используя поле из расширяющегося объекта Есть ли способ написать функцию расширения, которая изменяет значение объекта? Запуск Smart Type не работает в IntelliJ в проекте Kotlin / Spring Boot Как реализовать свойство, которое извлекается из определенного источника, пока оно не будет установлено непосредственно в Котлин? Как я могу получить ссылку на Kotlin KClass по имени, когда не работает на JVM? FragmentManager выбрасывает исключение IllegalArgumentException в Котлине Тестирование на Android-модуле класса Kotlin завершилось неудачей с «не может найти класс символов …» Kotlin лямбда с интерфейсом как аргумент Обновление представления Recycler и создание Parcelables для вращения экрана (что здесь лучше всего подходит?) Mapbox OfflineRegionObserver прослушиватель unregister

Kotlin VS Scala: реализовать методы с параметрами первичного конструктора

В Scala вы можете написать такой код.

trait List[T] { def isEmpty() :Boolean def head() : T def tail() : List[T] } class Cons[T](val head: T, val tail: List[T]) :List[T] { def isEmpty = false } 

вам не нужно переопределять хвост и голову, они уже определены, но в Котлин мне пришлось это кодировать.

 interface List<T> { fun isEmpty() :Boolean fun head() : T fun tail() : List<T> } class Cons<T>(val head: T, val tail: List<T>) :List<T> { override fun isEmpty() = false override fun head() = head override fun tail() = tail } 

Мой вопрос: «Это лучший способ написать мой код Котлина?»

Вы можете создавать свойства head и tail :

 interface List<T> { val head: T val tail: List<T> fun isEmpty(): Boolean } class Cons<T>(override val head: T, override val tail: List<T>) : List<T> { override fun isEmpty() = false }