關於lua語言的return返回值問題

2021-03-04 05:12:36 字數 1851 閱讀 6057

1樓:匿名使用者

不結束自然就執行下一步啊.

假如你的函式是 fun1, 結束是 fun2, 下一步是 fun3寫成:if fun1() == true thenfun2();

endfun3();

2樓:錯落二人組

function foo()

local var

if var == true then

return

else

--body

endend

lua 兩個return問題(關於for迭代)

3樓:匿名使用者

你的**貌似不對吧,應該是

function values (t)

local i = 0

return function() i = i + 1; return t[i] end

endt =

for element in values(t) do

print(element)

end簡單的說, 函式values 的返回值是一個另外一個匿名函式,其內容為 function () i = i + 1; return t[i] end

並且這個匿名函式本身又是一個閉包 (closure),因為在這個函式中使用了外層的資料,即 i 和 t, i 和 t 是 values 函式裡的區域性變數,被那個匿名函式使用,所以匿名函式和 t, i 組成了閉包。

a = values(t) ,則 a 為一個閉包函式,初始狀態下,閉包中的 i 為 0, t 為傳入的 t (即 ),如果你用 a() 的方法呼叫這個閉包函式,則會執行匿名函式中的內容,即 i 增加1, 並返回 t[i],因此下面的**效果為:

a = values(t)

a() -- 返回 t[1], 即 10

a() -- 返回 t[2], 即 20

a() -- 返回 t[3], 即 30

a() -- 超過 t 長度,返回 nil

for element in values(t) 這一句就相當於

a = values(t)

for element in a

而lua中 for *** in yyy 語句就相當於 不斷的讓 *** 等於 yyy(),然後執行後面的語句,直到 yyy() 返回 nil 為止。 【當然實際上 for *** in yyy 實際做的動作更加複雜,這裡只是最簡單的一種說法,方便你理解】,所以上面的 for element in a 就相當於不斷的讓 element = a(),直到 a() 返回 nil。

這樣你應該就可以理解整段**了。

在 c 中是完全不存在閉包(closure), 匿名函式 (anonymous function) 的概念的,所以你不能用 c 的思想去完全理解 lua 和其他高階語言中的新概念的。建議你找本 lua 的書再仔細看看,總之,用 lua/python 這類高階語言寫程式和用 c 寫,是完全不同的。

lua 裡return是什麼意思啊?怎麼用呢?

4樓:聆聽隨風

return就是返回

來的意思

function func()

return 1 --意思是源把1這個整數返回endlocal value = func --上面的baifunc函式返回了整數1,然後把du1賦值給value, 所以value為1

另外zhilua支援返回多個數dao

值。比如你的例子中返回的c1,c2,c3,c4,c5,那麼 c1,c2,c3,c4,c5的值就賦給了p1,p2,p3,p4,p5 ,也就是c1對應p1,c2對應p2 以此類推。明白了沒

關於C語言的,關於C語言

先是輸入字元到字串str1裡面,然後輸入一個整數,這個整數不能大於字串str1裡面的字元的個數。上述程式的作用是把字串str1裡面的字元從第m個開始複製,將複製結果存到字串str2裡面,然後輸出字串str2。include void main 0x開頭是16進位制數 0開頭是8進位制數 101代表a...

關於C語言的問題,關於c語言的問題?

語法錯誤咱不討論。從邏輯上,if a b else t a a b b t 應該是說,如果a b,則不操作,否則 即a b 交換a,b的值。但是注意 else下如果無大括號,則表示else內只執行第一句。所以應該為 else 下面兩句同理。可能表達不是很清楚,但你應該能看懂吧。希望對你有幫助。if後...

關於c語言的問題,求解答,關於C語言的問題,求解答!

1.d 識別符號不能以數字bai打du頭 2 d 一般c關鍵字在編譯器中zhi 會出現dao變成藍色,a不是而 define是,版b 中的printf只是一個輸出權函式,c是大寫的,不是,如果是int 就是,因為在c中,大小寫是敏感的 3 d d項轉譯成字元 4 a 0x20u的意思是無符號的16進...