Hatena::Grouperlang

msyktの日記

 | 

2013-12-14

3.8 ガード

19:47

ガードのテスト項目の区切りに使われているカンマは「論理積」を意味する。

要はテスト項目が「A,B,C」であれば「A and B and C」ということだろう。

-module(test38).
-compile(export_all).

guard_test() ->
    L = {1,2,3,4,5,6},
    func(L).

func(L) when is_tuple(L), size(L) =:= 5, abs(element(3, L)) =:= 3 ->
    io:format("when is_tuple(L), size(L) =:= 5, abs(element(3, T)) =:= 3");
func(L) when is_tuple(L), size(L) =:= 6, abs(element(3, L)) =:= 3 ->
    io:format("when is_tuple(L), size(L) =:= 6, abs(element(3, T)) =:= 3");
func(L) ->
    io:format("others").
Eshell V5.10.3  (abort with ^G)
1> c(test38).
test38.erl:12: Warning: variable 'L' is unused
{ok,test38}
2> test38:guard_test().
when is_tuple(L), size(L) =:= 6, abs(element(3, T)) =:= 3ok

すべて一致した2番目の項目のみが実行されていることを確認した。

 |