2011-09-26 12 views
6

puedo pasar una variable como un parámetro de varios valores:escritura literal XML como parámetro en Scala

scala> <b/> 
res26: scala.xml.Elem = <b></b> 

scala> Elem(null,"a",Null,TopScope,res26) 
res27: scala.xml.Elem = <a><b></b></a> 

Pero no puedo pasar un literal XML como parámetro de varios valores:

scala> Elem(null,"a",Null,TopScope,<b/>) 
<console>:12: error: not found: value < 
Elem(null,"a",Null,TopScope,<b/>) 

Pero Puedo pasar un XML literal como un parámetro simple

scala> def bar(s:String,n:Elem) = s+n.toString 
bar: (s: String, n: scala.xml.Elem)java.lang.String 
scala> bar("super ", <a/>) 
res30: java.lang.String = super <a></a> 

?

Gracias

Respuesta

8

Adición de un espacio antes de que el elemento XML hace que funcione:

scala> Elem(null, "a", Null, TopScope, <b/>) 
resN: scala.xml.Elem = <a><b></b></a> 

Desde el Scala Language Specification, Sección 1.5:

Con el fin de permitir la inclusión literal de fragmentos de XML, El análisis léxico cambia de Modo Scala a modo XML cuando encuentra un corchete angular de apertura '<' en el siguiente circunstancia: El’<’ irá precedido ya sea por espacios en blanco, un paréntesis de apertura o un llave de apertura e inmediatamente seguido de un carácter de inicio un nombre XML

+0

Gracias, lo veía en la sección 10.1 :) –

Cuestiones relacionadas