【问题标题】:Erlang Pattern Matching ProblemErlang 模式匹配问题
【发布时间】:2011-06-17 12:02:37
【问题描述】:

所以我正在编写一个 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->" 使它工作得很好-_- 傻我!

我仍然很想知道这是否是解决此问题的最佳方法,或者是否有更好的方法。

再次干杯:)

【问题讨论】:

  • 更好的方法是什么意思?测试结构?在这种情况下,使用模式匹配是可行的方法。无论您是使用case 还是单独的函数,都取决于最适合的方法。还是你在想别的?

标签: string list erlang pattern-matching validation


【解决方案1】:

你必须使用 _ - 匹配任何内容的通配符而不是 true

附:哎呀,看到你的编辑太晚了。

第二个问题的答案是 - 使用函数而不是案例:

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

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 2014-06-27
    • 2018-12-08
    • 2011-08-14
    • 2013-08-15
    • 2011-09-29
    • 2010-12-13
    • 2014-07-26
    • 2015-01-12
    相关资源
    最近更新 更多