2차원 목록 작업(Elixir)

12073 단어 Elixir
이 기사는 Elixir 2 Advent Calendar 2020의 5 일째입니다.
전날은 특정 사이트에서만 %HTTPoison.Error{id: nil, reason: :closed} 발생 (Elixir) 였습니다.

소개



  • Elixir에서 2 차원 목록을 조작하려면 어떻게해야합니까?
  • 이차원 목록이라고하는 것은 이런 녀석입니다.
    [
      [1, 2, 3],
      [4, 5, 6]
    ]
    

    결론


  • get_in/2
  • put_in/3

  • 예를 들어 list_of_lists[1][2] 을 읽고 싶습니다.



    에누 m. 아 t/2 를 2회 사용


    iex> list_of_lists = [[1, 2, 3], [4, 5, 6]]
    [[1, 2, 3], [4, 5, 6]]
    
    iex> Enum.at(list_of_lists, 1) |> Enum.at(2)
    6
    

    get_in 사용


    iex> list_of_lists = [[1, 2, 3], [4, 5, 6]]
    [[1, 2, 3], [4, 5, 6]]
    
    iex> get_in(list_of_lists, [Access.at(1), Access.at(2)]) 
    6
    

    - 덧붙여서 3차원은 이런 느낌
    iex> get_in([[[1, 2, 3], [4, 5, 6]], []], [Access.at(0), Access.at(1), Access.at(2)])
    6
    

    예를 들어 list_of_lists[1][2] 를 다시 작성하고 싶습니다.



    Enum 및 목록 모듈을 사용하여 다시 작성


    iex> list_of_lists = [[1, 2, 3], [4, 5, 6]]
    [[1, 2, 3], [4, 5, 6]]
    
    iex> list = Enum.at(list_of_lists, 1) |> List.update_at(2, fn _ -> 8 end)
    [4, 5, 8]
    
    iex> List.update_at(list_of_lists, 1, fn _ -> list end)
    [[1, 2, 3], [4, 5, 8]]
    

    put_in 사용


    iex> list_of_lists = [[1, 2, 3], [4, 5, 6]]
    [[1, 2, 3], [4, 5, 6]]
    
    iex> put_in(list_of_lists, [Access.at(1), Access.at(2)], 8)
    [[1, 2, 3], [4, 5, 8]]
    

    - 덧붙여서 3차원은 이런 느낌
    iex> put_in([[[1, 2, 3], [4, 5, 6]], []], [Access.at(0), Access.at(1), Access.at(2)], 8)
    [[[1, 2, 3], [4, 5, 8]], []]
    

    Wrapping Up


  • Enjoy Elixir !!!
  • 나는 Designing Elixir Systems with OTP 이라는 책을 계기로, get_in/2 이나 put_in/3 를 알았습니다
  • 단지이 책은 처음 읽었고 나머지는 전혀 읽지 않았습니다
  • 읽어 가고 싶다

  • 좋은 웹페이지 즐겨찾기