2014-01-14 6 views
1

Мне интересно, идея инструкции erlang if и возвращаемое значение (в данном случае true-> true). это мой фрагмент кодаErlang if statement и возвращает true

if 
(Velocity > 40) -> io:format(" processing fast !~n") ; 
true -> true 
end, 

Я знаю, что Erlang не позволяет вам иметь опцию if без истинной инструкции. но даже я могу использовать true-> false, но это не имеет значения для конечного вывода.

Собственно, в чем заключается идея в выражении if и возврате.

+2

Фактически, наличие «истины» в вашем случае, скорее всего, обескуражено, так как это показывает, что при проверке состояния вы не покрываете все возможности. Если вы проверите все возможные условия, истинное утверждение не обязательно и не обязательно. – 3yakuya

+0

Спасибо, Бякуя. –

ответ

6

Erlang's if - это простая комбинация шаблонов по булевым выражениям и возвращает результат.

Это действительно просто требует, чтобы что-то совпадает, вам не нужно «истинный -> истинный» случай на всех

, например:

if 
(Velocity > 40) -> io:format(" processing fast !~n") ; 
(Velocity < 40) -> io:format(" processing slow !~n") ; 
(Velocity == 40) -> io:format(" processing eh !~n") 
end, 

Там нет «верно ->» случай , но также нет никаких шансов, что он не соответствует одному из шаблонов.

Причина этого заключается в том, что «если» также является выражением (как и все в Эрл) так, что вы можете сделать что-то вроде:

X = if 
    (Vel > 40) -> 10; 
    (Vel < 40) -> 5 
    end, 

If Vel == 40, что значение ИКС? Это было бы неопределенным, поэтому erlang требует, чтобы вы всегда имели совпадение.

Общее дело, когда вы не хотите, чтобы указать исчерпывающий спичку, чтобы использовать так, как:

X = if 
    (Vel > 40) -> 10; 
    (Vel < 40) -> 5; 
    true -> 0 
    end, 

В последнем случае X всегда имеет значение (10, 5 или 0)

Имеют смысл?

0

В Erlang все это выражение, которое возвращает значение. Однако вам не нужен оператор true -> true, если вы его не включили, и совпадений нет, возникает ошибка, потому что интерпретатор не может определить возвращаемое значение выражения.

Это особенность языка.