Erlang模式匹配问题

4

我正在编写一个Erlang程序,通过套接字接收到一个字符串消息。

我需要检查消息是否符合格式:[整数,空格,整数,"\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
1个回答

3

代替true,你需要使用_ - 通配符来匹配任何内容。

P.S. 哎呀,我太晚看到你的编辑了。

回答你的第二个问题是 - 使用函数而不是条件语句:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接