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
Прикрепление, чтобы заменить вектор, который можно вырезать с помощью изображения с камеры, и растягиваемый растягивается за изображение? TornadoFX – Создание MVP-дизайна Обработка Enter Key на EditText (Kotlin, Android) SonarQube – Android не работает для gradle 3.0.0 checkParameterIsNotNull ошибка в примере входа в систему Могу ли я написать sampleVideoView? = findViewById <VideoView> (R.id.videoView) в Котлине? плагин gradle с функцией kotlin – set boolean extension Как получить и найти текущее состояние на машине состояния Spring? Сессия cookie не сохраняется с JSoup Обнаруживать конфликты просмотров и предотвращать перенасыщение Как получить содержимое веб-страницы на Kotlin Что делает оператор стрелки («->») в Котлине? Как скрыть поле для латинировки var Kitlin с помощью Java? Как смешивать несколько конструкторов родительского класса с val в дочернем классе добавить Google Fit distance (DataPoint выходит за пределы диапазона)