从ERLANG中的if-else返回值
我是erlang的新手。有没有办法从这个函数返回tuple2值?如果不是,工作围绕着什么? 当我尝试在结束后返回Tuple2时,它给出了从ERLANG中的if-else返回值,erlang,Erlang,我是erlang的新手。有没有办法从这个函数返回tuple2值?如果不是,工作围绕着什么? 当我尝试在结束后返回Tuple2时,它给出了 变量“Tuple2”在“if”中不安全。 当我在“如果”上面使用它时,Tuple2不能被改变 在您的代码中,元组在前两种情况下被“返回”。请记住,在Erlang中,最后一个表达式始终用作返回值。您得到警告的原因是,Tuple2在所有分支中都没有给定值。例如,如果Block是3怎么办元组2 让我们用更惯用的方式重写它,以便更好地查看返回的内容: parse(Tu
变量“Tuple2”在“if”中不安全。
当我在“如果”上面使用它时,Tuple2不能被改变 在您的代码中,
元组
在前两种情况下被“返回”。请记住,在Erlang中,最后一个表达式始终用作返回值。您得到警告的原因是,Tuple2
在所有分支中都没有给定值。例如,如果Block
是3怎么办<不会定义代码>元组2
让我们用更惯用的方式重写它,以便更好地查看返回的内容:
parse(Tuples,Str,Block) ->
if Block =:= 1 ->
Str1=string:substr(Str,1,1),
Str2=string:substr(Str,2,4),
Tuple2=Tuples++[{a,Str1},{b,Str2}];
Block =:= 2 ->
Str3=string:substr(Str,1,1),
Str4=string:substr(Str,2,3),
Tuple2=Tuples++[{c,Str3},{d,Str4};
true-> ok
end.
case表达式的每个分支中的最后一个表达式将被“返回”。
如果你看不到这一点,请考虑以下内容:
parse(Tuples,Str,Block) ->
case Block of
1 ->
Str1=string:substr(Str,1,1),
Str2=string:substr(Str,2,4),
Tuple2=Tuples++[{a,Str1},{b,Str2}];
2 ->
Str3=string:substr(Str,1,1),
Str4=string:substr(Str,2,3),
Tuple2=Tuples++[{c,Str3},{d,Str4};
_ ->
ok
end.
ok
从该大小写表达式中“返回”(大小写表达式的计算结果为ok
)
让我们重新编写原始代码,使其更加地道:
1> case 1 of
1> 1 -> ok;
1> 2 -> nok
1> end.
ok
在您的代码中,
Tuple
在前两种情况下被“返回”。请记住,在Erlang中,最后一个表达式始终用作返回值。您得到警告的原因是,Tuple2
在所有分支中都没有给定值。例如,如果Block
是3怎么办<不会定义代码>元组2
让我们用更惯用的方式重写它,以便更好地查看返回的内容:
parse(Tuples,Str,Block) ->
if Block =:= 1 ->
Str1=string:substr(Str,1,1),
Str2=string:substr(Str,2,4),
Tuple2=Tuples++[{a,Str1},{b,Str2}];
Block =:= 2 ->
Str3=string:substr(Str,1,1),
Str4=string:substr(Str,2,3),
Tuple2=Tuples++[{c,Str3},{d,Str4};
true-> ok
end.
case表达式的每个分支中的最后一个表达式将被“返回”。
如果你看不到这一点,请考虑以下内容:
parse(Tuples,Str,Block) ->
case Block of
1 ->
Str1=string:substr(Str,1,1),
Str2=string:substr(Str,2,4),
Tuple2=Tuples++[{a,Str1},{b,Str2}];
2 ->
Str3=string:substr(Str,1,1),
Str4=string:substr(Str,2,3),
Tuple2=Tuples++[{c,Str3},{d,Str4};
_ ->
ok
end.
ok
从该大小写表达式中“返回”(大小写表达式的计算结果为ok
)
让我们重新编写原始代码,使其更加地道:
1> case 1 of
1> 1 -> ok;
1> 2 -> nok
1> end.
ok