Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ERLANG中的if-else返回值_Erlang - Fatal编程技术网

从ERLANG中的if-else返回值

从ERLANG中的if-else返回值,erlang,Erlang,我是erlang的新手。有没有办法从这个函数返回tuple2值?如果不是,工作围绕着什么? 当我尝试在结束后返回Tuple2时,它给出了 变量“Tuple2”在“if”中不安全。 当我在“如果”上面使用它时,Tuple2不能被改变 在您的代码中,元组在前两种情况下被“返回”。请记住,在Erlang中,最后一个表达式始终用作返回值。您得到警告的原因是,Tuple2在所有分支中都没有给定值。例如,如果Block是3怎么办元组2 让我们用更惯用的方式重写它,以便更好地查看返回的内容: parse(Tu

我是erlang的新手。有没有办法从这个函数返回tuple2值?如果不是,工作围绕着什么? 当我尝试在结束后返回Tuple2时,它给出了
变量“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