Lua--循環

循環

循環語句是由循環體及循環的終止條件兩部分組成的。

循環類型 描述
while循環 在條件爲 true 時,讓程序重複地執行某些語句。執行語句前會先檢查條件是否爲 true。
for循環 重複執行指定語句,重複次數可在 for 語句中控制。
repeat…until 重複執行循環,直到 指定的條件爲真時爲止
嵌套循環 可以在循環內嵌套一個或多個循環語句(while do … end;for … do … end;repeat … until;)

while 循環

語法:

while(condition)
do
   statements
end

statements(循環體語句) 可以是一條或多條語句,condition(條件) 可以是任意表達式,在 condition(條件) 爲 true 時執行循環體語句。


示例:

a = 10
while(a < 20)
do
	print(a)
	a = a + 1
end


-----
10
11
12
13
14
15
16
17
18
19

for循環

Lua 編程語言中 for語句有兩大類::

  • 數值for循環
  • 泛型for循環

數值for循環

語法:

for var=exp1,exp2,exp3 do
	<執行體>
end

var 從 exp1 變化到 exp2,每次變化以 exp3 爲步長遞增 var,並執行一次 “執行體”。exp3 是可選的,如果不指定,默認爲1。

示例:

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

----
1
2
3
4
5
6
7
8
9
10
for i=10,1,-1 do
    print(i)
end

for的三個表達式在循環開始前一次性求值,以後不再進行求值。比如上面的f(x)只會在循環開始前執行一次,其結果用在後面的循環中。

function f(x)  
    print("function")  
    return x*2   
end  
for i=1,f(5) do print(i)  
end

-----
function
1
2
3
4
5
6
7
8
9
10

泛型for循環
泛型 for 循環通過一個迭代器函數來遍歷所有值,類似 java 中的 foreach 語句。

語法:

--打印數組a的所有值  
a = {"one", "two", "three"}
for i, v in ipairs(a) do
    print(i, v)
end 

示例:

days = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}  
for i,v in ipairs(days) do  
	print(v) 
end   
------
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

repeat…until循環

Lua 編程語言中 repeat…until 循環語句不同於 for 和 while循環,for 和 while 循環的條件語句在當前循環執行開始時判斷,而 repeat…until 循環的條件語句在當前循環結束後判斷。

語法:

repeat
   statements
until( condition )

我們注意到循環條件判斷語句(condition)在循環體末尾部分,所以在條件進行判斷前循環體都會執行一次。
如果條件判斷語句(condition)爲 false,循環會重新開始執行,直到條件判斷語句(condition)爲 true 纔會停止執行。
Lua repeat…until 循環流程圖如下:

示例:

-- 變量定義
a = 10
-- 執行循環
repeat
	print("a的值爲:",a)
	a = a + 1
until(a > 15)

-----

a的值爲:	10
a的值爲:	11
a的值爲:	12
a的值爲:	13
a的值爲:	14
a的值爲:	15

嵌套循環

for語法:

for init,max/min value, increment
do
   for init,max/min value, increment
   do
      statements
   end
   statements
end

while語法:

while(condition)
do
   while(condition)
   do
      statements
   end
   statements
end

repeat…until語法:

repeat
   statements
   repeat
      statements
   until( condition )
until( condition )

不同類型循環嵌套:

j = 2
for i = 2, 10 do
	for j = 2, (i/j), 2 do
		if(not(i%j))
		then
			break
		end
		if(j > (i/j))
		then
			print("i的值爲:", i)
		end
	end
end	

---

i的值爲:	8
i的值爲:	9
i的值爲:	10

循環控制語句

控制語句 描述
break 語句 退出當前循環或語句,並開始腳本執行緊接着的語句。
goto 語句 將程序的控制點轉移到一個標籤處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章