以下shell会话显示了我想要理解的一些行为:
1> A = "Some text".
"Some text"
2> "Some " ++ R = A.
"Some text"
3> R.
"text"
4> B = "Some ".
"Some "
5> B ++ L = A.
* 1: illegal pattern
当然,陈述2和5在句法上是相同的?我想用这个成语从字符串中提取一些文本,其中从配置文件中读入B
。这是可能的,我应该使用什么语法而不是上面5)中显示的语法?
谢谢!
答案 0 :(得分:4)
LHS ++ RHS
模式在编译时扩展到[ lhs0, lhs1, lhs2 | RHS]
(其中LHS =:= [lhs0, lhs1, lhs2]
,并且编译器拒绝为除文字字符串/列表之外的任何内容执行此操作。理论上它可以执行此操作变量,但它现在根本就没有。
我认为在你的情况下你需要这样做:
Prefix = read_from_config(),
TestString = "Some test string",
case lists:prefix(Prefix, TestString) of
true ->
%% remove prefix from target string
lists:nthtail(length(Prefix), TestString);
false ->
different_prefix
end.