通過例子學習Lua(2) --- Lua流程控制

1. 函數的使用

  以下程序演示瞭如何在Lua中使用函數, 及局部變量

  例e02.lua

  -- functions   function pythagorean(a, b)   local c2 = a^2 + b^2   return sqrt(c2)   end   print(pythagorean(3,4))

  運行結果

  5

  程序說明

  在Lua中函數的定義格式爲:

  function 函數名(參數)

  ...

  end

  與Pascal語言不同, end不需要與begin配對, 只需要在函數結束後打個end就可以了.

  本例函數的作用是已知直角三角形直角邊, 求斜邊長度. 參數a,b分別表示直角邊長,

  在函數內定義了local形變量用於存儲斜邊的平方. 與C語言相同, 定義在函數內的代

  碼不會被直接執行, 只有主程序調用時纔會被執行.

  local表示定義一個局部變量, 如果不加local剛表示c2爲一個全局變量, local的作用域

  是在最裏層的end和其配對的關鍵字之間, 如if ... end, while ... end等。全局變量的

  作用域是整個程序。

  2. 循環語句

  例e03.lua

  -- Loops   for i=1,5 do   print("i is now " .. i)   end

  運行結果

  i is now 1

  i is now 2

  i is now 3

  i is now 4

  i is now 5

  程序說明

  這裏偶們用到了for語句

  for 變量 = 參數1, 參數2, 參數3 do

  循環體

  end

  變量將以參數3爲步長, 由參數1變化到參數2

  例如:

  for i=1,f(x) do print(i) end

  for i=10,1,-1 do print(i) end

  這裏print("i is now " .. i)中,偶們用到了..,這是用來連接兩個字符串的,

  偶在(1)的試試看中提到的,不知道你們答對了沒有。

  雖然這裏i是一個整型量,Lua在處理的時候會自動轉成字符串型,不需偶們費心。

  3. 條件分支語句

  例e04.lua

  -- Loops and conditionals   for i=1,5 do   print(“i is now “ .. i)   if i < 2 then   print(“small”)   elseif i < 4 then   print(“medium”)   else   print(“big”)   end   end

  運行結果

  i is now 1

  small

  i is now 2

  medium

  i is now 3

  medium

  i is now 4

  big

  i is now 5

  big

  程序說明

  if else用法比較簡單, 類似於C語言, 不過此處需要注意的是整個if只需要一個end,

  哪怕用了多個elseif, 也是一個end.

  例如

  if op == "+" then   r = a + b   elseif op == "-" then   r = a - b   elseif op == "*" then   r = a*b   elseif op == "/" then   r = a/b   else   error("invalid operation")   end

  4.試試看

  Lua中除了for循環以外, 還支持多種循環, 請用while...do和repeat...until改寫本文中的for程序

發佈了87 篇原創文章 · 獲贊 3 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章