2016-04-06 3 views
2

В Scala вы можете написать такой код.Kotlin VS 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 
} 

Мой вопрос "является их лучший способ, чтобы написать свой код Котлин?"

ответ

8

Вы можете сделать 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 
}