Lua學習中的心得體會

2021-09-29 19:53:22 字數 1812 閱讀 2425

1.邏輯運算子-短路規則

–需要進行「短路規則」判斷的例子

–print(10 and 20) --output: 20

–print(nil and 80) --outpu: nil

–print(false and 66) --output: false

–print(2 or 5) --output: 2

–print(false or 10) --output: 10

–print(「你好」 and 10) --output: 10

–print(20 or 「hello」) --output: 20

2.關鍵字pairs與ipair的區別

pairs會遍歷table的所有鍵值對,table就是鍵值對的資料結構。而ipairs就是固定地從key值1開始,下次key累加1進行遍歷,如果key對應的value不存在,就停止遍歷。順便說下,記憶也很簡單,帶i的就是根據integer key值從1開始遍歷的。

請看個例子:

tb = 

for k,v in ipairs(tb) do

print(k, v)

end

輸出結果就是:

1 oh

2 my

3 god

因為tb不存在tb[4],所以遍歷到此為止了。

for k,v in pairs(tb) do

print(k, v)

end

輸出結果:

1 oh

2 my

3 god

6 world

5 hello

我們都能猜到,將輸出所有的內容。然而你發現輸出的順序跟你tb中的順序不同。

如果我們要按順序輸出怎麼辦?

for i = 1, #tb do

if tb[i] then

print(tb[i])

else

end

當然,僅僅是個陣列的話,ipairs也沒問題。

3.表長度的輸出

對錶進行遍歷輸出時,沒有鍵值對的表可以直接通過#或者table.getn獲取表的長度,有鍵值對的表需要通過迭代器函式pairs或者ipairs來獲取表的長度.

4.表最大值的問題

表tab=採用table.maxn函式求最大值時,返回的值是5,此官方函式有bug,實際輸出的是表的長度,而不是表的內容中的最大值.

5.可變引數

對可變引數進行遍歷時,用ipairs碰到nil時會停止遍歷,用pairs碰到nil時會跳過繼續遍歷,如果想遍歷到nil則需要用select關鍵字,select(』#』,…)可以獲取可變引數的長度,需要注意的是select關鍵字同arg衝突,同時select(i,…)的含義是從位置1開始遍歷所有的可變引數,所以如果是列印輸出所有的可變引數,可以不用使用for迴圈,如果需要對其中的值進行逐個操作,則需要

local num

for i=1,select('#',...) do

num=select(i,...)

print(num)

end

6.隨機數

在使用隨機函式math.random(1,10)時會發現數值並不隨機,主要原因在於lua中隨機函式的使用需要配合math.randomseed(os.time()),其中os.time()可以得到系統的時間,因其格式是轉換後乙個時刻變化的整數值,所以作為可變因子傳入十分合適,只有當可變因子數值發生大的變化時,才能影響到隨機函式的數值.同時如果想讓隨機因子變化的幅度比較大,可以通過string.reverse(tostirng(os.time())來對數值進行翻轉.

PHP PDO 心得體會

關於pdo 我想可以不用做過多的描述,寫一寫最近的使用心得體會 首先 關於如何使用pdo 連線到資料庫 dbms mysql 使用的資料庫 host localhost 選擇的主機 dbname test 選擇的資料庫 user root 登陸的使用者名稱 password 使用者密碼 dsn dm...

銷售心得體會

銷售思維的培養 1.裝可憐讓客戶動惻隱之心是一種方法但是不適合男人 2.身處高位的銷售領導往往擁有給客戶的折扣和動用資源的優勢,不要當綠葉,要按兵不動尋找時機 3.市場上的大客戶與哪家合作就會成為標桿事件,哪家公司就會成為一線公司。4.站在客戶的角度,在業務上給予中肯的意見,得到客戶的感謝和認可。5...

面試心得體會

最近開發人手短缺成了大問題,因此招人也成了乙個重要任務。通過這幾天的面試,對這方面有了一些心得體會。一是it企業需要哪方面素質的人才。我感覺關鍵有兩條,一是能幹活,二是能合作。企業為什麼青睞有經驗的人?因為來了就能幹活。當然對於學生而言,經驗缺乏是一大缺陷,這就要展現另一方面 我具備成為幹活能手的能...