orElse を使用して Option をチェーンした後、要素の型が変更され、期待どおりに使用できなくなったことがわかりました。
例: タイプが .xml のNodeSeq.
scala> xml1.headOption map { head => None } orElse xml2.lastOption map {last => Some(last)}
res11: Option[Some[ScalaObject with Equals]] = Some(Some(None))
の前にorElse、headは typeNodeであり、これは正しいですが、 type であるlast必要がありますNodeが、コンパイラはそれが typeであると見なし、パラメーターとして aを取る関数にScalaObject with Equals渡すことができません。lastNode
を使用してキャストできますlast.asInstanceOf[Node]が、このキャストを回避してlastタイプを作成する方法はありNodeますか?