2013-10-26 95 views
1

如何匹配變量值。所以,我想寫的smt像與變量匹配的模式

val x = 2 
val m = (1, 2) 
case m of (_, valueOf(x)) => "same" 
     | (_, _)   => "different" 

我想,它被命名爲穩定的標識符。

回答

4

您可以使用在case表達的變量和of表達的常數:

case (1, x) of (_, 2) => "same" 
      | _ => "different" 

你不能在標準ML做的是模式匹配針對對方的兩個變量。這隻會導致其中一個綁定到另一個的值(影響其中一個變量的舊值)。您需要使用if表達式,或者在case表達式之前將比較結果綁定到它自己的值,如下所示:

let 
val cmp = fn (_, m2) => m2 = x 
in 
case cmp m of true => "same" 
      | false => "different" 
end 
+0

謝謝。但讓我們假設我從其他變量得到'(1,2)'。 –

+0

我編輯的問題更清楚。 –