如何在二郎案件中的不同案件情况之间进行沟通

San*_*ers 1 erlang

我正在尝试做这样的事情:

test(Tester) ->
  case Tester of
         start -> X = 4 
         ok -> X = X + 5,
               Y = X/5;
         terminate -> Y
  end.
Run Code Online (Sandbox Code Playgroud)

但不完全是这个.我知道它可以用尾部或简单的递归来实现.通常X和Y是未绑定的.

在没有使用erlang全局变量的情况下,有没有办法在这些情况下进行通信?

Hyn*_*dil 5

Erlang是一种函数式语言,它意味着我们不在代码的不同部分之间进行通信,或者在没有目的的情况下将值存储在变量中,我们只是计算返回值(有时会产生一些副作用).如果我们在不同的代码分支中有共同的计算,我们可以简单地将它放在通用函数中.

test(Tester) ->
  case Tester of
         start     -> 4;
         ok        -> computeY();
         terminate -> computeY()
  end.

computeY() ->
    X = 4 + 5,
    X/5.
Run Code Online (Sandbox Code Playgroud)