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)
Имеют смысл?
Фактически, наличие «истины» в вашем случае, скорее всего, обескуражено, так как это показывает, что при проверке состояния вы не покрываете все возможности. Если вы проверите все возможные условия, истинное утверждение не обязательно и не обязательно. – 3yakuya
Спасибо, Бякуя. –