我想在给定元素之间定义一个顺序:El1 *isBefore* El2 *isBefore* El3
;以后通过下面的功能使用。
def isBefore(a: T, b: T): Boolean = ???
这有意义吗?至少有可能吗?
答案 0 :(得分:2)
目前尚不清楚E11
,E12
等应该是类型(因此是大写字母)还是值。对“元素”的引用使我认为是后者。
您为isBefore
使用了两种不同的含义,既是陈述也是问题。这将导致混乱。
这是我对您可能想要实现的目标的猜测。
class Elem {
private var next :Option[Elem] = None
def comesBefore(after :Elem) :Elem = {next=Some(after); after}
def isBefore(other :Elem) :Boolean = next.contains(other)
}
// create elements
val e23 = new Elem
val eBX = new Elem
val e$$ = new Elem
// set their order
eBX comesBefore e$$ comesBefore e23
// test their order
e23 isBefore e$$ //false
e$$ isBefore e23 //true
eBX isBefore e$$ //true
eBX isBefore e23 //false