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 } 
Intereting Posts
Не удается получить доступ к внешнему классу из анонимного класса Как правильно делать PATCH в строго типизированных языках на основе Spring – пример Определите, является ли экземпляр экземпляром класса данных Spring Boot сериализует текст / javascript для JSON Kotlin: закрытый класс не может «содержать» классы данных? Зачем? Нужно ли знать kotlin, чтобы получить сертификацию AAD (Associate Android Developer)? Ошибка несоответствия типа Котлин при передаче аргументов из терминала Как обрабатывать исключения в Котлине? Как преобразовать массив String в массив Int в Kotlin? Как отличить глобальную переменную от локального с тем же именем в Kotlin? найдены дублирующиеся устройства Bluetooth. Я здесь дважды погружаюсь? также может обновлять recyclerview Котлинское умножение между обнуляемыми и невалютными ошибками float даже с нулевой проверкой Как создать несколько разделов текстовых просмотров с помощью нескольких касаний? Почему мы используем «объект-компаньон» как своего рода замену статическим полям Java в Котлине? getContentResolver.openInputStream возвращает пустой поток