【发布时间】:2011-12-06 02:10:44
【问题描述】:
我有读取 XML 文件的代码。我需要处理的元素的一些属性是可选的。我正在尝试使用 Option[T] 来管理它们。我编写了以下内容来拉皮条由\ Node 运算符返回的 NodeSeq 类型:
class NodeSeqWrapper(nodeSeq: NodeSeq) {
def textOption: Option[String] = {
val text = nodeSeq.text
if (text == null || text.length == 0) None else Some(text)
}
}
implicit def nodeSeqWrapper(nodeSeq: NodeSeq): NodeSeqWrapper =
new NodeSeqWrapper(nodeSeq)
然后这样称呼它:
(node \ "@attr").textOption.getOrElse("Some default value")
如果节点具有“attr”属性,则此代码获取它的值。如果不是,则返回值“一些默认值”。
我该如何改进呢?有没有办法将类定义折叠到隐式方法中?有没有更好的方法来获取“可选”属性值?我是否“正确”地使用了Option[T]?
【问题讨论】:
-
您可能希望调用您的方法
textOption,与Seq的head和headOption方法的风格相同。 -
听起来不错。我会更改我的代码。也在更新问题。
标签: scala xml-parsing option