0
我在上SCALA的性状如下代码,类型,矢量和密封类的Scala
trait example {
type Schema = Vector[String] //Variable Names
sealed abstract class Value;
case class URI(name: Node) extends Value
case class Literal(value: Node) extends Value
case class BlankNode(name: Node) extends Value
case class Variable(name: Node) extends Value
type Fields = Vector[Value] //vector of values
然后,我填补这一对象使用从阿帕奇耶拿元件访问者在其他类如下:
class interpreter (q:Query) extends SPARQLInterpreter {
//val Fields = Vector[Value]
ElementWalker.walk(q.getQueryPattern(),
new ElementVisitorBase() {
override def visit(el: ElementPathBlock) {
val triples: util.Iterator[TriplePath] = el.patternElts
while (triples.hasNext()) {
val aux1: Triple = triples.next().asTriple()
val u:Value = URI(aux1.getSubject())
val b:Value = BlankNode(aux1.getPredicate)
val l:Value = Literal(aux1.getObject())
}
}
})
然后,我的问题是我应该如何填充Fields类型的声明,如Fields(u,b,l),因为它是一个向量,但编译器检测到错误。
谢谢,它的工作 –
我只是补充说,你也可以声明'val Fields = Vector'和'type Fields'并且启用'Fields(u,b,l)'等。 –
@AlexeyRomanov非常真实,但是它有一些缺点,例如能够说'Fields(1,2,3,4)'创建一个不符合'Fields'类型的'Vector [Int]',这可能会引起误解。 – puhlen