목록은 배열이 아닙니다
# Creating a list
list = [1, :atom, 3, 4, "string"]
그러나 Elixir에서 위의 코드는 List입니다.
목록이란 무엇입니까?
간단히 말해서 List는 Linked List입니다. 그러나 더 잘 이해하기 위해 배열이 무엇인지 기억하고 목록에 대해 이야기해 봅시다.
어레이 정보
배열은 동일한 유형의 데이터 모음입니다.
배열에서 인덱스를 통해 콘텐츠에 액세스할 수 있습니다. 예를 들어 Ruby에서 Array의 세 번째 요소를 직접 가져와야 하는 경우 인덱스 번호 2를 전달하여 수행할 수 있습니다.
> x = [1, 2, 3, 4]
[1, 2, 3, 4]
> x[2]
3
배열의 또 다른 기능은 요소 사이를 하나씩 직접 반복할 수 있다는 것입니다. Ruby에서는 다음과 같이 할 수 있습니다.
> x.each{|element| puts element}
1
2
3
4
이제 List와 Elixir에 대해 다시 이야기하겠습니다.
Elixir에서 목록은 연결된 목록입니다. 이는 각 항목이 메모리의 위치를 통해 다음 요소에 바인딩됨을 의미합니다.
목록의 항목을 어떻게 반복할 수 있습니까?
먼저 목록이 두 부분으로 구성되어 있음을 알아야 합니다. 머리는 목록의 첫 번째 항목이고 꼬리는 나머지 항목입니다.
Elixir에는 List의 첫 번째 항목(head)에 액세스하는 커널 기능
hd(list)
이 있고 List(tail)의 나머지 항목에 액세스하는 커널 기능tl(list)
도 있습니다. 아래 예를 살펴보십시오.> # creating the List
> list = [1, :atom, 3, 4, "string"]
[1, :atom, 3, 4, "string"]
> # Return the first item of the List - Head
> hd(list)
1
> # Return the rest of items of the List - Tail
> tl(list)
[:atom, 3, 4, "string"]
또한 패턴 일치를 사용하여 목록의
head
및 tail
에 액세스할 수 있습니다.# Creating a list
> list = [1, :atom, 3, 4, "string"]
[1, :atom, 3, 4, "string"]
# Using Pattern Matching to assign the first element
# to the head and the rest of the list to the tail.
> [head | tail] = list
[1, :atom, 3, 4, "string"]
# Return the first element from the list
> head
1
# Return the rest of elements from the list
> tail
[:atom, 3, 4, "string"]
목록의 각 항목을 반복하기 위해 재귀를 사용합니다.
# Creating the module as example
defmodule Example do
def show_each_one([head | tail]) do
# The kernel function IO to show the content of head
IO.puts(head)
# Calling the function itself
# (where the recursion happens)
# by passing the tail as the argument of the function
show_each_one(tail)
end
# Creating the function using the pattern Matching
# In the case of an empty list, it will return null (nil)
def show_each_one([]), do: nil
end
# Creating a list
list = [1, :atom, 3, 4, "string"]
[1, :atom, 3, 4, "string"]
# Call the function Example.show_each_one/1
# by passing the list as argument
Example.show_each_one(list)
# It will return the result below:
1
atom
3
4
string
nil
다른 많은 커널 함수를 사용하여 목록을 사용할 수 있습니다.
first(list)
- 목록의 첫 번째 요소를 반환합니다. last(list)
- 목록의 목록 요소를 반환합니다. insert_at(list, index, value)
- 목록의 특정 위치에 하나의 요소를 삽입합니다. 목록에 대한 자세한 내용을 알고 싶으면 Elixir documentation about the List 을 참조하십시오.
우리가 알아야 할 흥미로운 점은 목록 작업에 사용하는 함수가 구현에서 재귀를 사용한다는 것입니다.
이 콘텐츠가 도움이 되고 의미가 있기를 바랍니다. 안녕!
콘택트 렌즈:
이메일: [email protected]
링크드인:
Github: https://github.com/dnovais
트위터:
Reference
이 문제에 관하여(목록은 배열이 아닙니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dnovais/a-list-is-not-an-array-pi0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)