我想知道该scala.xml
库是如何实现的,以从 XML 中获取Elem
-instance。
所以我可以写:
val xml = {
<myxml>
Some wired text withoud "'s or code like
import x
x.func()
It's like a normal sting in triple-quotes.
</myxml>
}
xml.text
String =
"
Some text wired withoud "'s or code like
import x
x.func()
It's like a normal sting in triple-quotes.
"
查看源代码并没有让我了解这是如何实现的。“XML 检测”是(硬)scala 语言功能还是内部 DSL?因为我想像这样构建自己的东西:
var x = LatexCode {
\sqrt{\frac{a}{b}}
}
x.toString
"\sqrt{\frac{a}{b}}"
或者
var y = PythonCode {
>>> import something
>>> something.func()
}
y.toString
"""import something ..."""
y.execute // e.g. passed to python as python-script
或者
object o extends PythonCode {
import x
x.y()
}
o.toString
"""import x...."""
我想避免使用诸如PythonCode { """import ...""" }
“DSL”之类的东西。而在 Scala 中,XML 被神奇地传输到了一个scala.xml
-Class;与Symbol
我可以得到的相同val a = 'symoblname
,但在源代码中不知道这是如何实现的。
我怎样才能对自己做这样的事情,最好是作为内部 DSL?