-1

私は 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 の値は最初の match 呼び出しで渡されるのはどこですか? その後、連続する再帰呼び出しを理解しましたが、既知の値として t:SearchTree のみを使用してパターン マッチを開始するにはどうすればよいでしょうか。

この機能のテストはありますが、質問には必要ないと思います

前もって感謝します

4

1 に答える 1

2

minこの呼び出しで関数の atへの呼び出しをmax介して渡されます。したがって、 、、およびで呼び出すだけです。最初の呼び出しでは渡されず、スコープ内にあるため、case ステートメントでアクセスできます。checktestcheck(t, Int.MinValue, Int.MaxValue)testchecktInt.MinValueInt.maxValueminmaxmatch

于 2013-10-09T05:37:27.453 に答える