less than 1 minute read

Elixir의 for 포괄 구문(Comprehensions)을 잘 사용한 코드 예제를 ’Testing Elixir (Andrea Leopardi, Jeffrey Matthias, 2021)’ 책에서 봤다.

for id <- 100..900, id not in all_rain_ids do
    record = %{"dt" => now_unix, "weather" => [%{"id" => id}]}

    assert {:ok, [weather_struct]} = ResponseParser.parse_response(%{"list" => [record]})
    assert weather_struct.rain? == false, "Expected weather id (#{id}) to NOT be a rain condition"
end

100..900 |> Enum.filter() |> Enum.each() 구문을 한 번에 표현했다. :into, :uniq, :reduce 옵션도 제공해서 말 그대로 포괄 구문으로 웬만한 건 다 표현할 수 있다. 이 정도는 되어야 달달한 문법(Syntactic sugar, 편의 문법)으로 한 자리를 차지할 수 있다.

쓴다면 과용할 것 같고 그냥 무시하자니 간결하게 표현할 수 있는 자리가 분명히 있을 그런 구문이다.