Class Scala REPL";错误:值>;不是类型参数T";的成员;

Class Scala REPL";错误:值>;不是类型参数T";的成员;,class,scala,compiler-errors,Class,Scala,Compiler Errors,这是我的档案 trait Set[T] { def contains(x: T): Boolean def incl(x: T): Set[T] def union(that: Set[T]): Set[T] } class Empty[T] extends Set[T] { override def toString = "." def contains(x: T): Boolean = false def incl(x: T): Set[T]

这是我的档案

trait Set[T] {
    def contains(x: T): Boolean
    def incl(x: T): Set[T]
    def union(that: Set[T]): Set[T]
}

class Empty[T] extends Set[T] {
    override def toString = "."
    def contains(x: T): Boolean = false
    def incl(x: T): Set[T] = new NonEmpty[T](x, new Empty[T], new Empty[T])
    def union(that: Set[T]): Set[T] = that
}

class NonEmpty[T](elem: T, left: Set[T], right: Set[T]) extends Set[T] {
    override def toString = "{" + left + elem + right + "}"

    def contains(x: T): Boolean =
        if (x < elem) left contains x
        else if (x > elem) right contains x
        else true

    def incl(x: T): Set[T] =
         if (x < elem) new NonEmpty(elem, left incl x, right)
         else if (x > elem) new NonEmpty(elem, left, right incl x)
         else this

    def union(that: Set[T]): Set[T] =
        ((left union right) union that) incl elem
}
特征集[T]{
def包含(x:T):布尔值
def包括(x:T):设置[T]
def联合(即:Set[T]):Set[T]
}
类空[T]扩展集[T]{
覆盖def toString=“”
def包含(x:T):布尔值=false
def incl(x:T):设置[T]=新的非空[T](x,新的空[T],新的空[T])
def union(that:Set[T]):Set[T]=that
}
类非空[T](元素:T,左:集[T],右:集[T])扩展集[T]{
override def toString=“{”+左+元素+右+“}”
def包含(x:T):布尔值=
如果(xelem)右侧包含x,则为else
否则是真的
def包括(x:T):设置[T]=
如果(x元素)新非空(元素,左,右,包括x)
除此之外
def联合(即:Set[T]):Set[T]=
((左联轴节右)包含元素的联轴节
}
我使用“:paste”方法是因为:load不起作用。但是我得到了以下错误

<console>:25: error: value < is not a member of type parameter T
               if (x < elem) left contains x
                     ^
<console>:26: error: value > is not a member of type parameter T
               else if (x > elem) right contains x
                          ^
<console>:30: error: value < is not a member of type parameter T
                if (x < elem) new NonEmpty(elem, left incl x, right)
                      ^
<console>:31: error: value > is not a member of type parameter T
                else if (x > elem) new NonEmpty(elem, left, right incl x)
:25:error:value<不是类型参数T的成员
如果(x不是类型参数T的成员
如果(x>elem)右侧包含x,则为else
^
:30:错误:值<不是类型参数T的成员
如果(x不是类型参数T的成员
else if(x>元素)新非空(元素,左,右,包括x)
我确信这个文件是正确的,因为它来自课堂示例,并且在课堂上,当教授使用


有什么帮助吗?

您会得到这个错误,因为不是每个类型的
T
都定义了
元素)新非空(元素,左,右,包括x)
除此之外
def联合(即:Set[T]):Set[T]=
((左联轴节右)包含元素的联轴节
}
T由于在Scala 2.11中已弃用了“”,使用“”的通用二进制搜索树的替代实现如下所示:

object GenericBinarySearchTree {

abstract class Set[T] {
  def incl(x: T): Set[T]
  def contains(x: T): Boolean
  def union(that: Set[T]): Set[T]
}

type L[X] = X => Ordered[X]

class Empty[T : L] extends Set[T] {

  override def toString = "."

  def incl(x: T): Set[T] = new NonEmpty(x, new Empty, new Empty)

  def contains(x: T): Boolean = false

  def union(that: Set[T]): Set[T] = that
}

class NonEmpty[T : L](elem: T, left: Set[T], right: Set[T]) extends Set[T] {  

  override def toString = "{" + left + elem + right + "}"

  def incl(x: T): Set[T] = {
    if(x > elem) new NonEmpty(elem, left, right.incl(x))
    else if(x < elem) new NonEmpty(elem, left.incl(x), right)
    else this
  }

  def contains(x: T): Boolean = {
    if(x == elem) true 
    else if(x > elem) right.contains(x)
    else left.contains(x)
  } 

  def union(that: Set[T]): Set[T] = ((left union right) union that) incl elem
}

}
对象GenericBinarySearchTree{
抽象类集[T]{
def包括(x:T):设置[T]
def包含(x:T):布尔值
def联合(即:Set[T]):Set[T]
}
类型L[X]=X=>有序[X]
类空[T:L]扩展集[T]{
覆盖def toString=“”
def incl(x:T):设置[T]=新非空(x,新空,新空)
def包含(x:T):布尔值=false
def union(that:Set[T]):Set[T]=that
}
类非空[T:L](元素:T,左:集[T],右:集[T])扩展集[T]{
override def toString=“{”+左+元素+右+“}”
def incl(x:T):设置[T]={
如果(x>元素)新的非空(元素,左,右,包括(x))
else if(xelem)正确,则为else。包含(x)
左。包含(x)
} 
def并集(that:Set[T]):Set[T]=(左并集右)并集that)包括元素
}
}
object GenericBinarySearchTree {

abstract class Set[T] {
  def incl(x: T): Set[T]
  def contains(x: T): Boolean
  def union(that: Set[T]): Set[T]
}

type L[X] = X => Ordered[X]

class Empty[T : L] extends Set[T] {

  override def toString = "."

  def incl(x: T): Set[T] = new NonEmpty(x, new Empty, new Empty)

  def contains(x: T): Boolean = false

  def union(that: Set[T]): Set[T] = that
}

class NonEmpty[T : L](elem: T, left: Set[T], right: Set[T]) extends Set[T] {  

  override def toString = "{" + left + elem + right + "}"

  def incl(x: T): Set[T] = {
    if(x > elem) new NonEmpty(elem, left, right.incl(x))
    else if(x < elem) new NonEmpty(elem, left.incl(x), right)
    else this
  }

  def contains(x: T): Boolean = {
    if(x == elem) true 
    else if(x > elem) right.contains(x)
    else left.contains(x)
  } 

  def union(that: Set[T]): Set[T] = ((left union right) union that) incl elem
}

}