abstract class Boolean{
def ifThenElse[T](t: => T,e: => T): T
def && (x: => Boolean): Boolean=ifThenElse(x,false)
...
def == (x: Boolean): Boolean=ifThenElse(x,x.unary_!)
}
object true extends Boolean{
def ifThenElse[T](t: => T,e: => T)=t
}
trait List[T]{
def isEmpty: Boolean
def head: T
def tail: List[T]
}
class Cons[T](val head: T,val tail: List[T]) extends List[T]{
def isEmpty=false
}
class Nil[T] extends List[T]{
def isEmpty=true
def head: Nothing=throw new NoSuchElementException("Nil.head")
def tail: Nothing=throw new NoSuchElementException("Nil.head")
}
这篇博客分享了如何在Scala中利用ifThenElse方法,结合抽象类Boolean的&&等操作符,巧妙地构造出布尔类型的逻辑表达式。同时,文章还介绍了List抽象类及其Cons和Nil子类的定义,展示了Scala中列表的实现方式。

被折叠的 条评论
为什么被折叠?



