트랙
/
Elixir
Elixir
/
학습 과정
/
패턴 매칭
패턴

패턴 매칭 에서 Elixir

73개의 연습 문제

패턴 매칭 소개

Elixir 함수를 작성할 때는 패턴 매칭과 함께 단언적인 스타일을 활용할 수 있어요:

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • 패턴 매칭은 매치 연산자 =/2를 사용해 명시적으로 이루어져요.

    • 연산자 왼쪽에 있는 데이터의 _형태_가 오른쪽과 일치하면 매치가 성공해요.

    • 매치가 성공하면 왼쪽의 변수에는 오른쪽의 값이 바인딩돼요.

    • 밑줄 _을 사용하면 해당 위치의 값은 무시할 수 있어요.

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • 핀 연산자 ^를 사용하면 변수가 다시 바인딩되는 것을 막고, 대신 기존 값과 패턴 매칭을 할 수 있어요.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • 패턴 매칭은 함수 절의 헤드에서도 일어날 수 있어요. 그러면 패턴과 일치하는 인자만 함수를 호출해요.

  • 함수 절의 패턴 매칭으로도 변수를 바인딩할 수 있어요.

    defmodule Example do
      def named_function(:a = atom_variable) do
        {atom_variable, 1}
      end
    end
    
    Example.named_function(:a)
    # => {:a, 1}
    # The first function clause matches, so it is invoked
    
    Example.named_function(:b)
    # => ** (FunctionClauseError) no function clause matching in Example.named_function/1
    
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

패턴 매칭 배우기

연습이 잠겨 있어요

패턴 매칭 개념을 연습하려면 연습 문제 10개를 더 잠금 해제해요