Относится к Добавление атрибута XML в зависимости от параметра Я хотел бы добавить тег XML в Scala в зависимости от параметра.
scala> def toXml(value1: String, value2: Option[String]) =
| <body>
| <tag1>{value1}</tag1>
| {value2 map (x => <tag2>{x}</tag2>) flatten}
| </body>
toXml: (value1: String,value2: Option[String])scala.xml.Elem
Если опция существует:
scala> toXml("value1", Some("value2"))
res1: scala.xml.Elem =
<body>
<tag1>value1</tag1>
<tag2>value2</tag2>
</body>
Если опция не существует:
scala> toXml("value1", None)
res2: scala.xml.Elem =
<body>
<tag1>value1</tag1>
</body>
Я хочу сгенерировать много тегов в зависимости от опции, мне было интересно, можно ли найти более краткое решение. Например, сводить класс Elem с помощью? используйте оператор следующим образом (это грязное решение, поскольку значение Option2 преобразуется в строку перед вызовом оператора?):
scala> def toXml2(value1: String, value2: Option[String]) =
| <body>
| <tag1>{value1}</tag1>
| {<tag2>{value2}</tag2>?}
| </body>
Есть мысли?