开发学院

您的位置:首页>教程>正文

教程正文

Erlang 决策

Erlang 决策

  决策结构要求程序员指定一个或多个要由程序评估测试的条件,以及一个或多个要在条件被确定为真的情况下执行的语句,以及如果条件被确定为假的情况下要执行的其他语句。

  下面是在大多数编程语言中发现的典型决策结构的一般形式:

  Erlang 语言提供以下类型的决策语句。

  •   if语句:由布尔表达式和一个或多个语句组成。

  •   多重表达式:if表达式还允许同时计算多个表达式。

  •   嵌套if语句:您可以在另一个if语句内使用一个if语句或其他if语句。

  •   case语句:它可以用于基于case语句的输出执行表达式。

Erlang if语句

  我们将看到的第一个决策声明是“if”声明。Erlang中此语句的一般形式显示在以下程序中:

if
condition ->
   statement#1;
true ->
   statement #2
end.

  在Erlang中,condition是评估为真或假的表达式。如果condition为真,则执行语句# 1,否则执行语句#2。

例子

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = 5, 
   B = 6, 
   
   if 
      A == B -> 
         io:fwrite("True"); 
      true -> 
         io:fwrite("False") 
   end.

  上述计划需要注意以下事项

  这里使用表达式变量A和b之间的比较

  •   ->运算符需要遵循表达式。

  •   ;需要遵循语句#1。

  •   ->运算符需要遵循真实表达式。

  •   语句“end”需要在那里表示“if”块的结尾。

 上述程序的结果为:

False

Erlang 多重表达式

  if表达式还允许同时计算多个表达式。Erlang中此语句的一般形式显示在以下程序中:

语法

if
condition1 ->
   statement#1;
condition2 ->
   statement#2;
conditionN ->
   statement#N;
true ->
   defaultstatement
end.

  在Erlang中,condition是评估为真或假的表达式。如果条件为true,则将执行语句#1。否则评估下一个condition等等。如果没有评估为true,则评估defaultstatement。

例子

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = 5, 
   B = 6, 
   if 
      A == B -> 
         io:fwrite("A is equal to B"); 
      A < B -> 
         io:fwrite("A is less than B"); 
      true -> 
         io:fwrite("False") 
   end.

  上述代码的输出结果如下:

A is less than B

Erlang 嵌套if语句

  有时我们需要将多个if语句嵌入到内部,这在其他编程语言中是很容易实现的,在Erlang也可以。

例子

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = 4, 
   B = 6, 
   if 
      A < B ->
      
         if 
            A > 5 -> 
               io:fwrite("A is greater than 5"); 
            true -> 
               io:fwrite("A is less than 5")
         end;
      true -> 
         io:fwrite("A is greater than B") 
   end.

上述代码的输出结果:

A is less than 5

Erlang case语句

  Erlang提供case语句,可用于基于case语句的输出执行表达式。

  case声明的一般形式为-

case expression of
   value1 -> statement#1;
   value2 -> statement#2;
   valueN -> statement#N
end.

  case声明的工作流程如下

  •   要评估的运算式会放置在case表达式中。通常为一个值,该值在后续语句中使用。

  •   每个值都是根据case表达式传递的值计算的。根据哪个值为true,将执行后续语句。

例子

-module(helloworld). 
-export([start/0]). 

start() -> 
   A = 5,
   case A of 
      5 -> io:fwrite("The value of A is 5"); 
      6 -> io:fwrite("The value of A is 6") 
   end.

  上述代码的输出结果:

The value of A is 5.