功能模式匹配:Scala - 在初始调用中丢失

时间:2013-10-09 05:32:30

标签: scala recursion pattern-matching

我正在尝试理解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作为已知值。

我确实对此功能进行了测试,但我认为这不是问题所必需的

提前致谢

1 个答案:

答案 0 :(得分:2)

minmax通过此check调用函数test的{​​{1}}来传递。所有check(t, Int.MinValue, Int.MaxValue)所做的就是使用testcheckt来调用Int.MinValueInt.maxValuemin未通过他们在范围内的初始max调用,因此可在案例陈述中使用。