없이 스칼라에서 중첩 된 경우 클래스를 접습니다. 예로는트래버스는/내가 합계 및 제품 유형의 혼합에 대한 몇 가지 사례 수업을 상용구 코드
object Top {
def fold[T](accu: T)(f : (T, Leaf) => T)(top: Top) = {
val allLeaves = top.container.leaf :: top.middle.left :: top.middle.right :: top.extraLeaves
allLeaves.foldLeft(accu)(f)
}
private def countBadLeaf(count: Int, leaf : Leaf) = leaf match {
case BadLeaf => count + 1
case _ => count
}
def countBad(top: Top): Int = fold(0)(countBadLeaf)(top)
private def sumGoodLeaf(count: Int, leaf : Leaf) = leaf match {
case GoodLeaf(v) => count + v
case _ => count
}
def sumGoodValues(top: Top) = fold(0)(sumGoodLeaf)(top)
}
실제 생활 :
- 가
GoodLeaf
의 여기
에 BadLeaf
이미 종속성으로 cats
라이브러리가 있으므로 해당 lib를 사용하는 솔루션이 선호됩니다. 나는이 문제를 해결하기 위해 새로운 의존성을 포함하도록 개방되어있다.
내 구체적인 예를 들어, 정의는 재귀가 아니지만 재귀 정의에도 사용할 수있는 솔루션을 찾는 데 관심이 있습니다.
*이 작업을 수행하는 코드를 작성하는 방법을 알고 있지만 지루할 것입니다. * 먼저 상용구를 표시하십시오. 그럼 우리가 얘기 할게. – Jubobs