2011-01-28 267 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

如果消息是正確的它工作正常,但它只是似乎崩潰,如果該消息不匹配。

我有一種感覺,我可能會對此完全錯誤的方式,但我不知道還有什麼嘗試...

乾杯的任何幫助或建議=]

編輯: 好吧,那算了!替換"true->""_->"使它工作得很好-_-傻我!

我仍然有興趣知道這是否是最好的方式去做這件事,或者如果有更好的方法。

乾杯再次:),而不是真正的

+1

你的意思是一個更好的辦法?測試結構?在這種情況下,使用模式匹配是最好的選擇。無論你是用`case`還是單獨的函數來做,都取決於最適合的東西。還是你在想別的東西? – rvirding 2011-01-29 01:21:45

回答

3

你必須使用_ - 它匹配任何

附:通配符哎呀,看到你的編輯太晚了。

回答你的第二個問題是 - 使用功能,而不是個案:

f([X1, 32, Y1, 13, 10]) -> 
    ...; 
f(_) -> 
    ok.