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進...