Ответ 1
Позвольте мне поместить if
в клуб. Вы используете if
с одним условием и возможным else
, чтобы оно было. Вы используете оператор cond
, когда у вас более одного условия, а оператора if
недостаточно, к концу, оператор case
используется, когда вы хотите, чтобы шаблон соответствовал некоторым данным.
Объясните примерами: предположите, что вы хотите есть яблоко, если сегодня идет дождь или рис, если нет, тогда вы можете использовать:
if weather == :raining do
IO.puts "I'm eating apple"
else
IO.puts "I'm eating rice"
end
Это ограниченный мир, поэтому вы хотите расширить свои параметры, и из-за этого вы будете есть разные вещи на некоторых условиях, поэтому оператор cond
для этого:
cond do
weather == :raining and not is_weekend ->
IO.puts "I'm eating apple"
weather == :raining and is_weekend ->
IO.puts "I'm will eat 2 apples!"
weather == :sunny ->
IO.puts "I'm happy!"
weather != :raining and is_sunday ->
IO.puts "I'm eating rice"
true ->
IO.puts "I don't know what I'll eat"
end
Последний true
должен быть там, иначе он вызовет исключение.
Ну так что насчет case
? Он используется, чтобы сопоставить что-то. Предположим, что вы получаете информацию о погоде и дне недели в качестве сообщения в кортеже, и вы зависите от этого, чтобы принять решение, вы могли бы написать свои намерения как:
case { weather, weekday } do
{ :raining, :weekend } ->
IO.puts "I'm will eat 2 apples!"
{ :raining, _ } ->
IO.puts "I'm eating apple"
{ :sunny, _ } ->
IO.puts "I'm happy!"
{ _, :sunday } ->
IO.puts "I'm eating rice"
{ _, _ } ->
IO.puts "I don't know what I'll eat"
end
Итак, case
предлагает вам подход к сопоставлению шаблонов с данными, которые у вас отсутствуют с if
или cond
.