我有一个函数返回一个函数。我用EUnit测试来检查它:
string_to_options_test() ->
Parser = get_parser("-", ?OPTS_FOO_BAR),
{ok, [opt_foo, opt_bar]} = Parser("foo-bar").没关系的。当我修改最后一行时,会得到一个错误:
string_to_options_test() -> % 41
Parser = get_parser("-", ?OPTS_FOO_BAR),
Parser("foo-bar") = {ok, [opt_foo, opt_bar]}. % 43, swapped LHS and RHS,运行测试:
urlparser.erl:43: illegal pattern
urlparser.erl:41: Warning: variable 'Parser' is unused为什么我不能在作业的左边使用Parser函数?
发布于 2013-09-04 18:27:56
这很有趣。每个模式匹配的LHS表达式必须是模式,而右边可能是任意术语。主要的区别是模式可能有未绑定的变量,但必须完全减少。你的LHS是一个在编译时无法计算的表达式--就像一些算术表达式一样--因此不是一个有效的模式。
https://stackoverflow.com/questions/18620861
复制相似问题