定义元素顺序

时间:2019-08-02 17:22:17

标签: scala

我想在给定元素之间定义一个顺序:El1 *isBefore* El2 *isBefore* El3;以后通过下面的功能使用。

def isBefore(a: T, b: T): Boolean = ???

这有意义吗?至少有可能吗?

1 个答案:

答案 0 :(得分:2)

目前尚不清楚E11E12等应该是类型(因此是大写字母)还是值。对“元素”的引用使我认为是后者。

您为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