2011-01-28 16 views
4

私はErlangプログラムを書いています。ソケットを介して入ってくる文字列としてメッセージがあります。Erlangパターンマッチング問題

メッセージが[Integer、Space、Integer、 "\ r \ n"] などの形式であることを確認する必要があります。 "1 3 \ r \ n"とし、メッセージがこの形式と一致する場合にのみ何かを行います。

私は

case Move of 
    [X1, 32 ,Y1,13,10]-> 
     %do stuff.... 
    true-> 
     %don't do stuff... 
    end

メッセージが正しければそれは正常に動作を試してみましたが、ちょうど、メッセージが一致しない場合はクラッシュするようです。私はこの完全に間違った方向について行くすることができる感覚を持っていますが、他に何をしようとすることを確認していない

...任意のヘルプやアドバイスを

乾杯=]

EDIT : 分かった、気にしないで! "true->""_->"に置き換えると、うまく動作します。

私はこれがこれについての最良の方法であるかどうか、あるいはより良い方法があるかどうかを知りたいと思っています。再び

乾杯:)

+1

どのようにあなたがより良い方法を意味していますか?構造をテストするには?その場合は、パターンマッチングを使用して移動する方法です。あなたが「ケース」か別の機能かを問わず、それは最良のものに依存します。それともあなたは何か他のことを考えていましたか? – rvirding

答えて

3

の代わりに、本当のあなたは_を使用する必要があります - 何

P.S.に一致するワイルドカードおっと、編集が遅すぎました。あなたの2番目の質問は次のようになりに

答え - 代わりに例使用機能:

f([X1, 32, Y1, 13, 10]) -> 
    ...; 
f(_) -> 
    ok. 
関連する問題