2009-04-18 99 views
3

我與一位模式匹配試驗在二郎:爲什麼函數參數中沒有動態位模式?

-module(test). 
-export([test/2]). 

%test(P,<<X:P,0:1>>) -> 
% X. 

test(P,X) -> 
    <<Y:P,0:1>> = X, 
    Y. 

編譯test/2註釋掉版本時,我收到一宗投訴,「變量‘P’是綁定」。 有沒有任何理由不允許第一個版本與第二個版本一樣工作?

回答

4

因爲在註釋掉版本P是一個長度 - 爲它工作二郎需要執行兩個賽 - 匹配是不確定的模式的第二個參數的值...

問題你問中的條文模式匹配是「這是我的條款」 - 你不能「隨便走進條款」,然後再出來,如果它不是...

在第二個例子中X爲在比賽結束前,你承諾要進入該條款,如果碰撞時間太快!

0

的原因是,函數的自變量進行評估相互獨立的。第二步檢查綁定變量的正確性。

這意味着,在第一個實施例P將評估第二參數,它是對模式匹配的規則時是未結合的。相比之下,在第二個例子中,在評估二進制模式匹配時,P是綁定的。

相關問題