Kotlin VS Scala:使用主构造函数参数实现方法

时间:2016-04-06 14:53:14

标签: scala interface kotlin traits

在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代码吗?”

1 个答案:

答案 0 :(得分:8)

您可以设置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
}