パターンマッチングは言語機能であり、そのうちのmatch
ステートメントは最も顕著な例です。他にもよく使われる2つの例があります:
val List(x,y,(z: Int,w: Int)) = List("one","two",(3,4))
for ((text,i) <- List(("one",1),("two",2))) println(text + " = " + i)
あなた自身ではできません。この言語では、変数を作成する新しい方法を定義することはできないため、これらのことは言語サポートでのみ発生する可能性があります。
match
ステートメント自体は、言語内のパターンマッチング可変作成サポートを使用しますが、原則としてライブラリフィーチャーとして実装できます。しかし、それはいくつかのケースでは効率が悪い:だから
// This is implemented with fast jumps, not slow if-then-else!
n match {
case 0 => // Do action 0
case 1 => // Do action 1
case 2 => // Do action 2
case _ => // Do default action
}
// This is tail recursive, so you won't overflow the stack!
def recursiveMatch(xs: List[Any]): List[Any] = xs match {
case (x @ Int) :: rest => recursiveMatch(rest)
case _ => xs
}
、すべてのすべての、いや、あなたは自分自身にマッチするパターンを書き込むことができない、とあなたが一致文を書くことができながら、使用することに利点がある既存の1。
この回答には本当の答えはないようです。それはすべてふわふわした言葉であり、賞賛します... – ziggystar