假如現在要從這個 list 取出偶數再套上一個函式
[1, 2, 3, 4, 5, 6, 7]
|> Enum.filter(fn x -> rem(x, 2) == 0 end)
|> Enum.map(fn x -> x * 2 end)
通常會使用 Enum 模組的filter
, map
等函式
也可以使用 for 來完成
for x <- [1, 2, 3, 4, 5, 6, 7], rem(x, 2) == 0 do
x * 2
end
這個 for 會把 [1, 2, 3, 4, 5, 6, 7]
使用 <-
一個一個的 pattern matching 到左邊
接著再濾過符合 rem(x, 2) == 0
的項目,
再放入 do end
執行
上面的會得到
[4, 8, 12]
更方便的是可以同時使用兩個以上的變數
for x <- [1, 2, 3, 4, 5],
y <- [3, 4, 5, 8, 9],
x == y do
x
end
這樣可以列出兩個 list 都有的 [3, 4, 5]
或是取得這兩個 list 的所有組合
把每個組合相乘變成 z
再濾出偶數
for x <- [1, 2, 3, 4, 5],
y <- [3, 4, 5, 8, 9],
z = x * y,
rem(z, 2) == 0 do
z
end