가드는 패턴 매칭을 보완하는 용도로 사용해요. 가드를 사용하면 더 복잡한 검사를 할 수 있어요. 패턴 매칭을 사용할 수 있는 일부 상황에서 가드를 사용할 수 있지만, 모든 상황에서 그런 건 아니에요. 예를 들어 함수 절이나 case 절에서 사용할 수 있어요.
def empty?(list) when is_list(list) and length(list) == 0 do
true
end
가드는 when 키워드로 시작하고, 그 뒤에 불리언 표현식이 와요.
가드 표현식은 다음과 같은 특별한 함수예요.
true 또는 false 값을 반환해야 해요.자주 쓰이는 가드 목록은 Elixir 문서에서 찾을 수 있어요. 여기에는 다음이 포함돼요.
defguard로 자신만의 가드를 정의할 수 있어요.
Elixir의 명명 규칙에 따르면, 가드 이름은 is_로 시작해야 해요.
defmodule HTTP do
defguard is_success(code) when code >= 200 and code < 300
def handle_response(code) when is_success(code) do
:ok
end
end