Elixir는 true와 false 값을 불리언 타입으로 표현해요. 값은 true와 false 두 가지뿐이에요. 이 값들은 변수에 바인딩할 수 있어요:
true_variable = true
false_variable = false
and/2, or/2, not/1 연산자를 사용해 엄격한 불리언 표현식을 평가할 수 있어요.
true_variable = true and true
false_variable = true and false
true_variable = false or true
false_variable = false or false
true_variable = not false
false_variable = not true
불리언 값을 반환하는 함수를 작성할 때는 함수 이름 끝에 ?를 붙이는 것이 관례예요. 불리언 값을 저장하는 변수에도 같은 관례를 사용할 수 있어요.
def either_true?(a?, b?) do
a? or b?
end
이 연습 문제에서는 클래식 게임 Pac-Man의 규칙 몇 가지를 Elixir 함수로 옮겨야 해요.
옮겨야 할 규칙은 네 가지이고, 모두 게임 상태와 관련이 있어요.
인자가 어떻게 만들어지는지는 걱정하지 말고, 인자들을 조합해 원하는 결과를 반환하는 데만 집중해요.
두 개의 인자(_Pac-Man이 파워 펠릿을 활성화한 상태인지_와 Pac-Man이 유령에 닿아 있는지)를 받아서, Pac-Man이 유령을 먹을 수 있는지를 나타내는 불리언 값을 반환하는 Rules.eat_ghost?/2 함수를 정의해요. 이 함수는 Pac-Man이 파워 펠릿을 활성화한 상태이고 유령에 닿아 있을 때만 true를 반환해야 해요.
Rules.eat_ghost?(false, true)
# => false
두 개의 인자(_Pac-Man이 파워 펠릿에 닿아 있는지_와 Pac-Man이 점에 닿아 있는지)를 받아서, Pac-Man이 점수를 얻었는지를 나타내는 불리언 값을 반환하는 Rules.score?/2 함수를 정의해요. 이 함수는 Pac-Man이 파워 펠릿이나 점에 닿아 있으면 true를 반환해야 해요.
Rules.score?(true, true)
# => true
두 개의 인자(_Pac-Man이 파워 펠릿을 활성화한 상태인지_와 Pac-Man이 유령에 닿아 있는지)를 받아서, Pac-Man이 지는지를 나타내는 불리언 값을 반환하는 Rules.lose?/2 함수를 정의해요. 이 함수는 Pac-Man이 유령에 닿아 있고 파워 펠릿이 활성화되어 있지 않으면 true를 반환해야 해요.
Rules.lose?(false, true)
# => true
세 개의 인자(Pac-Man이 점을 모두 먹었는지, Pac-Man이 파워 펠릿을 활성화한 상태인지, Pac-Man이 유령에 닿아 있는지)를 받아서, Pac-Man이 이기는지를 나타내는 불리언 값을 반환하는 Rules.win?/3 함수를 정의해요. 이 함수는 Pac-Man이 점을 모두 먹었고, 3번에서 정의한 인자들을 기준으로 봤을 때 지지 않았으면 true를 반환해야 해요.
Rules.win?(false, true, false)
# => false
Exercism에 가입하고 Elixir 트랙을 개념 58개연습 문제 168개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.