2014-01-12 1 views

답변

35

에 설명하는 다른 langages

모두 condcase에서 switch 또는 select 문을 닮은. 하나의 조건과 가능하면 elseif을 사용하면됩니다. 두 개 이상의 조건이 있고 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이없는 데이터에 대한 패턴 일치 방식.

14

내 대답은 간단하다 :

  • cond는 인수를 수신하지 않으며, 당신이 각 지점에서 다른 조건을 사용할 수 있습니다.
  • case은 인수를 받고 모든 분기는 인수에 대해 인 입니다.
관련 문제