- Elixir 教程
- Elixir - 首頁
- Elixir - 概述
- Elixir - 環境
- Elixir - 基本語法
- Elixir - 資料型別
- Elixir - 變數
- Elixir - 運算子
- Elixir - 模式匹配
- Elixir - 決策
- Elixir - 字串
- Elixir - 字元列表
- Elixir - 列表和元組
- Elixir - 關鍵字列表
- Elixir - 對映
- Elixir - 模組
- Elixir - 別名
- Elixir - 函式
- Elixir - 遞迴
- Elixir - 迴圈
- Elixir - 可列舉
- Elixir - 流
- Elixir - 結構體
- Elixir - 協議
- Elixir - 檔案I/O
- Elixir - 程序
- Elixir - 符號
- Elixir - 列表推導式
- Elixir - 型別規範
- Elixir - 行為
- Elixir - 錯誤處理
- Elixir - 宏
- Elixir - 庫
- Elixir 有用資源
- Elixir - 快速指南
- Elixir - 有用資源
- Elixir - 討論
Elixir - 迴圈
由於不可變性,Elixir 中的迴圈(與任何函數語言程式設計語言一樣)與命令式語言中的寫法不同。例如,在像 C 這樣的命令式語言中,你會這樣寫:
for(i = 0; i < 10; i++) {
printf("%d", array[i]);
}
在上例中,我們同時修改了陣列和變數i。在 Elixir 中這是不可能的。相反,函式式語言依賴於遞迴:一個函式遞迴呼叫自身,直到滿足某個條件停止遞迴。在這個過程中沒有資料被修改。
現在讓我們用遞迴寫一個簡單的迴圈,列印 n 次 hello。
defmodule Loop do
def print_multiple_times(msg, n) when n <= 1 do
IO.puts msg
end
def print_multiple_times(msg, n) do
IO.puts msg
print_multiple_times(msg, n - 1)
end
end
Loop.print_multiple_times("Hello", 10)
執行上述程式後,會產生以下結果:
Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello
我們利用函式的模式匹配技術和遞迴成功地實現了迴圈。遞迴定義難以理解,但將迴圈轉換為遞迴很容易。
Elixir 提供了Enum 模組。這個模組用於大多數迭代迴圈呼叫,因為它比嘗試為相同的目的找出遞迴定義更容易使用。我們將在下一章討論這些。只有在找不到使用該模組的解決方案時,才應使用您自己的遞迴定義。這些函式經過尾呼叫最佳化,速度很快。
廣告