Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala多嵌套大小写类_Scala_Case Class - Fatal编程技术网

Scala多嵌套大小写类

Scala多嵌套大小写类,scala,case-class,Scala,Case Class,大家好,我在SCALA上创建了以下case类: sealed abstract class Value; case class U(name: String) extends Value case class L(name: String) extends Value case class B(name: String) extends Value sealed abstract class Term case class Var(name: String) extends

大家好,我在SCALA上创建了以下case类:

sealed abstract class Value;
  case class U(name: String) extends Value
  case class L(name: String) extends Value
  case class B(name: String) extends Value

  sealed abstract class Term
  case class Var(name: String) extends Term //variable name
  case class Val(value: Value) extends Term //value

sealed abstract class Pattern //patterns
  case class BGP(subject: Term, predicate: Term, obj: Term) extends Pattern
  case class And( pat1: Pattern, pat2: Pattern) extends Pattern
  case class Filter(pred: Predicate, pattern: Pattern ) extends Pattern


def function(p: Pattern): Unit = p match { 
    case BGP(Var(x), Val(y), Val(z)) => {
      val con:conv = new conv()
      val valor:Value = Val(y).value
}
然后,如您所见,BGP包含Term并扩展到模式,Val包含值并扩展到Term,U、L、B包含字符串并扩展到值,
在我的函数中,我希望访问包含U或L或B case类的字符串,变量valor=Val(y)。例如,value包含一个U类,但当我写入valor.XXXX时,不会显示name选项。最大的问题是如何从U访问字符串名

您只需在
上定义它,顺便说一句,它可能是
特征

sealed trait Value {
  def name: String
}
case class U(name: String) extends Value
case class L(name: String) extends Value
case class B(name: String) extends Value

您只需在
上定义它,顺便说一句,它可能是
特征

sealed trait Value {
  def name: String
}
case class U(name: String) extends Value
case class L(name: String) extends Value
case class B(name: String) extends Value

此时的这些类位于trait:trait sparql解释器{sealed abstract class Value;case class URI(name:Node)扩展值case class Literal(name:Node)扩展值case class BlankNode(name:Node)延伸Value@VladimirRincon我看不出这有什么区别,你不能访问
类,你是这么说的吗?好的@flavian,我明白你的观点,我实现了,你是对的,它可以工作,谢谢你!!现在这个类有一个特点:trait sparql解释器{密封的抽象类值;案例类URI(名称:节点)扩展值案例类文字(名称:节点)扩展值案例类BlankNode(名称:节点)延伸Value@VladimirRincon我看不出这有什么区别,你不能访问
类,这就是你说的吗?好的@flavian,我明白你的观点,我实现了,你是对的,它是有效的,谢谢!!你把你的
U
L
B
类实例当作
,这不正确“没有声明任何方法/字段,但你希望它在你想要的时候神奇地拥有它们吗?:Diges,我希望SCALA的神奇属性,XD,@flavian给了我正确的答案你将你的
U
L
B
类实例视为
值,它没有声明任何方法/字段,但你希望它是“你想要的时候就有魔法吗?:染料,我希望SCALA的魔法属性,XD,”弗拉维安给了我正确的答案