2011-01-28 130 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.