4
4

More than 5 years have passed since last update.

【Elixir】forやEnum.eachの外で作ったList変数に中で要素追加できなくてハマる

Last updated at Posted at 2016-04-26

forやEnum.eachの中で要素追加してもダメだよって話です。

こんな感じの処理。javaとかphpとかよくやります。

test.ex
lst = [0, 1, 2]
hoge = []

for data <- lst do
  hoge = [data] ++ hoge
end

IO.puts List.first(hoge) <> "***"
IO.puts List.last(hoge) <> "***"

これを実行すると、

$ elixir test.ex

test.ex:5: warning: variable hoge is unused

こんな感じで、hogeのfirstもlastも何も返してきません。

ず〜っと、「なんでだ、、、」ってなってたんですが、elixirでは以下が正しいみたいですね。

test.ex
lst = [0, 1, 2]

hoge = for data <- lst do
  data
end

IO.puts List.first(hoge)
IO.puts List.last(hoge)

これだと

$ elixir test.ex
0
2

ちゃんと表示されました。


これに半日近く悩み続けたのでメモしておきました(`・ω・´)ゞ

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4