Learn X By Example · Elixir 篇 · Array in Elixir
我们的第一个示例将会展示如何在 Elixir 中使用数组。下面是源代码:
defmodule ArrayExample do
def run do
# Create an array (list) with 5 elements, all initialized to 0
a = List.duplicate(0, 5)
IO.puts("emp: #{inspect(a)}")
# Set a value at an index
a = List.replace_at(a, 4, 100)
IO.puts("set: #{inspect(a)}")
IO.puts("get: #{Enum.at(a, 4)}")
# Get the length of the array
IO.puts("len: #{length(a)}")
# Declare and initialize an array in one line
b = [1, 2, 3, 4, 5]
IO.puts("dcl: #{inspect(b)}")
# Create an array with specific values at specific indices
c = [100] ++ List.duplicate(0, 2) ++ [400, 500]
IO.puts("idx: #{inspect(c)}")
# Create a 2D array
two_d = [
[0, 1, 2],
[1, 2, 3]
]
IO.puts("2d: #{inspect(two_d)}")
# Create and initialize a 2D array
two_d = [
[1, 2, 3],
[1, 2, 3]
]
IO.puts("2d: #{inspect(two_d)}")
end
end
ArrayExample.run()
在 Elixir 中,没有像其他语言中的传统数组,而是使用列表。但是我们可以像其他语言那样使用它们。
这里我们定义了一个长度为5的列表 a
。并使用 List.duplicate/2
将它初始化为0。
我们可以使用 List.replace_at/3
设置某个位置的值,并使用 Enum.at/2
获取值。
内置的 length/1
函数返回列表的长度。
我们可以使用 [1, 2, 3, 4, 5]
语法在同一行声明和初始化列表。
我们可以使用 ++
操作符设置指定位置的值。
List 类型是一维的,但是可以组合类型来构建多维数据结构。这里我们创建了一个列表的列表来表示 2D 数组。
你也可以一次性创建和初始化多为数组。
将代码保存为 array_example.exs
并使用 elixir
运行:
$ elixir array_example.exs
emp: [0, 0, 0, 0, 0]
set: [0, 0, 0, 0, 100]
get: 100
len: 5
dcl: [1, 2, 3, 4, 5]
idx: [100, 0, 0, 400, 500]
2d: [[0, 1, 2], [1, 2, 3]]
2d: [[1, 2, 3], [1, 2, 3]]
注意 Elixir 中数组的打印格式是 [v1, v2, v3, ...]
。