我正在尝试理解Scala模式匹配功能,我似乎无法理解这里发生的事情。
sealed abstract class SearchTree
case object Empty extends SearchTree
case class Node(l: SearchTree, d: Int, r: SearchTree) extends SearchTree
def test(t: SearchTree): Boolean = {
def check(t: SearchTree, min: Int, max: Int): Boolean = t match {
case Empty => true
case Node(l, d, r) => min <= d && d < max && check(l, min, d) && check(r, d, max)
check(t, Int.MinValue, Int.MaxValue)
}
我的问题是:值min在哪里:Int,max:Int通过初始匹配调用传递?之后我理解了连续的递归调用,但是我们如何才能开始模式匹配只有t:SearchTree作为已知值。
我确实对此功能进行了测试,但我认为这不是问题所必需的
提前致谢
答案 0 :(得分:2)
min
和max
通过此check
调用函数test
的{{1}}来传递。所有check(t, Int.MinValue, Int.MaxValue)
所做的就是使用test
,check
和t
来调用Int.MinValue
。 Int.maxValue
和min
未通过他们在范围内的初始max
调用,因此可在案例陈述中使用。