我发现在使用orElse链接选项后,元素类型发生了更改,这使我无法按预期使用它。链接选项使用orElse更改元素类型
例如:一个类型为NodeSeq
的xml。
scala> xml1.headOption map { head => None } orElse xml2.lastOption map {last => Some(last)}
res11: Option[Some[ScalaObject with Equals]] = Some(Some(None))
的orElse
之前,head
是Node
型,这是正确的,但last
也应该Node
型的,但是编译器认为它是ScalaObject with Equals
型的,我能不能通过last
到功能采取Node
作为参数。
我可以使用last.asInstanceOf[Node]
来投射它,有没有办法避免这种投射,仍然会使last
的类型为Node
?
你说得对。 'orElse'只能看到xml.lastOption。 – Sawyer