kha*_*iuk 9 erlang pattern-matching
使用Erlang我可以做这样的事情:
"kapa" ++ D = "kapagama". % D now has a value "gama"
Run Code Online (Sandbox Code Playgroud)
有没有办法将"变量"置于左侧位置?就像是
D ++ "gama" = "anyLengthStringgama".
Run Code Online (Sandbox Code Playgroud)
对于此表达式,shell返回错误:
* 1: illegal pattern
Run Code Online (Sandbox Code Playgroud)
奖金问题:有人可以解释为什么它不起作用?它背后的逻辑是什么?
Hyn*_*dil 14
"kapa" ++ D = "kapagama".
Run Code Online (Sandbox Code Playgroud)
只是语法糖
[$k, $a, $p, $a | D] = "kapagama".
Run Code Online (Sandbox Code Playgroud)
这只是语法糖
[$k|[$a|[$p|[$a|D]]]] = "kapagama".
Run Code Online (Sandbox Code Playgroud)
此代码没有任何对应物:
D ++ "gama" = "kapagama".
Run Code Online (Sandbox Code Playgroud)
这可能是语法糖.所以史蒂夫维诺斯基写道,你必须使用lists:reverse/1
"amag" ++ D = lists:reverse("kapagama"), lists:reverse(D).
Run Code Online (Sandbox Code Playgroud)
或使用re模块.
为此,您应该使用正则表达式匹配,或使用几个列表反转:
1> "amag" ++ D = lists:reverse("anyLengthStringgama").
"amaggnirtShtgneLyna"
2> lists:reverse(D).
"anyLengthString"
Run Code Online (Sandbox Code Playgroud)