결과 :적용 또는 옵션에 대한 작업은 나는 다음과 같은 코드가
class CSplit(var s1: CanvNode, var s2: CanvNode) extends SplitPane
{
topComponent = s1.merge
bottomComponent = s2.merge
def containsV(orig: MapCanvT): Option[MapCanvT] =
{
def containsIn(cn: CanvNode): Option[MapCanvT] = cn match
{
case Left => None
case Right(mc) => if (mc == orig) Some(mc) else None
}
containsIn(s1) match
{
case Some(mc) => Some(mc)
case None => containsIn(s2)
}
}
}
내가 containsV 방법의 코드를 줄이고 자합니다. 나의 첫번째 생각은 접는 방법을 사용하여 containsIn 메소드를 줄이는 것이었다. 그러나 Option에는 하나도 없으며 Class Either를 확장하지도 않습니다. Option [T]는 [T, None] 중 하나를 확장해서는 안됩니까? 그러면 적어도 하나는 양쪽의 접는 방법을 사용할 수 있습니다.
내 마지막 생각은 S1과 목록으로 S2 처리하고 그 위에 찾을 수 있습니까했지만, 난이 컴파일 얻을 수 없습니다
def containsV(orig: MapCanvT):
Option[MapCanvT] = ::[CanvNode](s1, s2).find(_ == Right(orig))
자세한 답변을 주셔서 감사합니다. 둘 중 하나의 구문에 어려움을 겪었으므로 필터 방법이 매우 유용합니다. –