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 } 

你不需要覆盖它们已经定义的尾部和头部,但是在Kotlin中,我必须对它进行编码。

 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 } 

我的问题是“他们是写我的Kotlin代码的更好方法吗?”

您可以制作headtail属性:

 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 }