2011-09-26 23 views
6

のパラメータとして、私は多値パラメータとして変数を渡すことができライティングXMLリテラル:Scalaの

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

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

しかし、私は、多値パラメータとしてXMLリテラルを渡すことはできません。

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

しかし、単純なパラメータとしてXMLリテラルを渡すことができます。

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> 

おかげでXML要素は、それが動作します前にスペースを追加する

答えて

8

Scala Language Specificationから

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

、セクション1.5:

XMLフラグメントのリテラルを含めることを可能にするために、字句解析は、 に開き角括弧「<」が出現すると、スカラモードからXMLモードに切り替わります次のような状況では:」<」のいずれかの空白で、文字が続く開口部 括弧や開きブレースと、すぐにはXML名に

+0

感謝を 開始に先行しなければならない、私は、セクション10.1 :)に見えました –