iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0

假如現在要從這個 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

上一篇
Plug 路由 (Router)
下一篇
關於遞迴 (Recursion)
系列文
通勤看手機就可讀懂的 Elixir 語言入門教學30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言