成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Lua 循環:如何使用 while 和 repeat until

開發
學習如何以及何時在 Lua 中使用 while 和 repeat until 循環。

控制結構是編程語言的一個重要特征,因為它們使你能夠根據通常在程序運行時動態建立的條件來指導程序的流程。不同的語言提供了不同的控制,在 Lua 中,有 ??while??? 循環、??for??? 循環和 ??repeat??? ??until??? 循環。這篇文章涵蓋了 ??while??? 和 ??repeat until??? 循環。由于它們的靈活性,我在一篇 ??單獨的文章??? 中介紹 ??for?? 循環。

條件是由一個使用運算符的表達式來定義的,運算符是你在數學課上可能認識的符號的一個花哨的術語。Lua 中有效的運算符有:

  • ??==?? 等于
  • ??~=??不等于
  • ??<?? 小于
  • ??>?? 大于
  • ?????小于或等于
  • ??>=?? 大于或等于

這些被稱為關系運算符,因為它們比較兩個值之間的關聯。還有一些邏輯運算符,其含義與英語中的含義相同,可以納入條件中,進一步描述你想檢查的狀態:

  • ??and??
  • ??or??

下面是一些條件的例子:

  • ??foo > 3??:變量 ??foo?? 是否大于 3???foo?? 必須是 4 或更大才能滿足這個條件。
  • ??foo >= 3??:??foo?? 是否大于或等于 3???foo?? 必須是 3 或更大才能滿足這個條件。
  • ??foo > 3 and bar < 1??:??foo?? 是否大于 3 而 ??bar?? 小于 1?要滿足這個條件,??foo?? 變量必須在 ??bar?? 為 0 的同時為 4 或更大。
  • ??foo> 3 or bar < 1??:??foo?? 是否大于 3?或者,??bar?? 是否小于 1?如果 ??foo?? 是 4 或更大,或者 ??bar?? 是 0,那么這個條件就是真的。如果 ??foo?? 是 4 或更大,而 ??bar?? 是 0,會怎樣?答案出現在本文的后面。

While 循環

只要滿足某個條件,while 循環就會執行指令。例如,假設你正在開發一個應用來監測正在進行的僵尸末日。當沒有剩余的僵尸時,就不再有僵尸末日了:

zombie = 1024

while (zombie > 0) do
print(zombie)
zombie = zombie-1
end
if zombie == 0 then
print("No more zombie apocalypse!")
end

運行代碼,看僵尸消失:

$ lua ./while.lua
1024
1023
[...]
3
2
1
No more zombie apocalypse!

until 循環

Lua 還有一個 ??repeat?? ??until?? 循環結構,本質上是一個帶有 ??catch?? 語句的 ??while?? 循環。假設你在從事園藝工作,你想追蹤還剩下什么可以收獲的東西:

mytable = { "tomato", "lettuce", "brains" }
bc = 3
repeat
print(mytable[bc])
bc = bc - 1
until( bc == 0 )

運行代碼:

$ lua ./until.lua
brains
lettuce
tomato

這很有幫助!

無限循環

一個無限循環有一個永遠無法滿足的條件,所以它無限地運行。這通常是一個由錯誤邏輯或你的程序中的意外狀態引起的錯誤。例如,在本文的開頭,我提出了一個邏輯難題。如果一個循環被設定為 ??foo > 3 or bar < 1?? 運行 ,那么當 ??foo?? 為 4 或更大而 ??bar?? 為 0 時,會發生什么?

下面是解決這個問題的代碼,為了以防萬一,還使用了 ??break?? 語句安全捕獲:

foo = 9
bar = 0
while ( foo > 3 or bar < 1 ) do
print(foo)
foo = foo-1
-- safety catch
if foo < -800000 then
break
end
end

你可以安全地運行這段代碼,但它確實模仿了一個意外的無限循環。有缺陷的邏輯是 ??or?? 運算符,它允許這個循環在 ??foo?? 大于 3 和 ??bar?? 小于 1 的情況下繼續進行。??and?? 運算符有不同的效果,但我讓你去探索。

無限循環實際上有其用途。圖形應用使用技術上的無限循環來保持應用程序窗口的開放。我們沒有辦法知道用戶打算使用這個程序多久,所以程序無限地運行,直到用戶選擇退出。在這些情況下使用的簡單條件顯然是一個總是被滿足的條件。下面是一個無限循環的例子,為了方便起見,還是內置了一個安全陷阱:

n = 0
while true do
print(n)
n = n+1
if n > 100 then
break
end
end

條件 ??while true?? 總是被滿足,因為 ??true?? 總是為真。這是比寫 ??while 1 == 1?? 或類似的永遠為真的簡潔方式。

Lua 中的循環

從示例代碼中可以看出,盡管有不同的實現方式,但循環基本上都是朝著同一個目標工作。選擇一個對你來說有意義的,并且在你需要執行的處理過程中效果最好的。以防萬一你需要它:終止失控循環的鍵盤快捷鍵是 ??Ctrl+C??。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-08-21 12:31:41

BashForWhile

2021-03-24 13:17:41

編程循環語句Java

2023-09-01 09:19:40

CSS函數模式

2021-12-09 23:20:31

Python循環語句

2024-02-26 12:13:32

C++開發編程

2021-06-07 06:10:22

C++While循環For 循環

2009-11-10 11:30:12

VB.NET循環語句

2009-07-21 14:03:00

Scalaif表達式while循環

2010-09-08 17:00:22

SQLWHILE循環

2010-03-19 14:18:07

Java Socket

2022-12-08 09:56:22

Luafor 循環

2010-03-16 11:05:53

Java while循

2010-03-12 13:44:31

Python whil

2010-01-07 15:42:57

VB.NET WhilEnd While循環

2021-07-21 14:29:27

Python編程語言軟件開發

2010-09-09 16:34:19

SQL循環while

2022-09-30 07:32:48

循環while循環體

2020-11-13 07:22:46

Java基礎While

2020-12-11 05:57:01

Python循環語句代碼

2022-01-27 09:35:45

whiledo-while循環Java基礎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 白浆在线 | 国产激情一区二区三区 | 午夜精品久久久久久久久久久久久 | 中文字幕第一页在线 | 欧美午夜精品 | 欧美日韩不卡合集视频 | 亚洲精品黄 | 国产精品久久久久aaaa九色 | 一区二区三区视频在线观看 | 蜜臀久久 | 夜夜av| 日韩精品区 | 久久久久久久久91 | 精品成人佐山爱一区二区 | 一级午夜aaa免费看三区 | 国产激情91久久精品导航 | 日韩视频在线免费观看 | 国产精品久久久久久久久久久久冷 | av影音资源| 国产精品久久久久久久毛片 | 奇米超碰在线 | 亚洲国产一区视频 | 精品久 | 久久久久久亚洲国产精品 | 亚洲444eee在线观看 | 罗宾被扒开腿做同人网站 | 亚洲一区二区三区久久 | 久久免费视频1 | 精品乱码一区二区三四区视频 | 综合伊人| 国产亚洲精品综合一区 | 亚洲国产成人精品女人久久久 | 好婷婷网 | 超碰人人做 | 青青久在线视频 | 九九色综合 | 91麻豆产精品久久久久久 | 亚洲国产日韩欧美 | 日韩图区| 亚洲三区在线观看 | 久久精品久久久久久 |