這次要介紹幾個(gè)其實(shí)很簡(jiǎn)單,但是一定要小心的返回值規(guī)則。
1.resume的參數(shù)
resume函數(shù)除了第一個(gè)參數(shù)是協(xié)同程序外,還能繼續(xù)傳其他參數(shù),如下代碼:
resume第二個(gè)參數(shù)為“resume parame”,這個(gè)參數(shù)將會(huì)傳遞給協(xié)同程序的函數(shù)。
輸出結(jié)果如下:
2.resume函數(shù)的第二個(gè)返回值
還記得resume函數(shù)的兩個(gè)返回值嗎?一個(gè)代表協(xié)同程序是否正確執(zhí)行,一個(gè)代表錯(cuò)誤信息。
那,如果協(xié)同程序正確執(zhí)行,錯(cuò)誤信息這個(gè)返回值自然就是nil了。
然后,這里還有一個(gè)規(guī)則,那就是yield函數(shù)的參數(shù)可以傳遞到resume的第二個(gè)返回值里。
如下代碼:
3.yield的返回值
這次輪到y(tǒng)ield的返回值了,來(lái)看看下面的代碼:
這次的協(xié)同程序會(huì)執(zhí)行一個(gè)for循環(huán),而我們也會(huì)調(diào)用兩次resume函數(shù),輸出結(jié)果如下:
于是,第二次調(diào)用resume時(shí),首先就得到了上一次yield的返回值了,這個(gè)返回值正是resume的第二個(gè)參數(shù)。
沒(méi)錯(cuò),resume的第二個(gè)返回值是yield的參數(shù),而yield的返回值,是resume的第二個(gè)參數(shù)。
再簡(jiǎn)單一些,resume的返回值是yield的參數(shù),yield的返回值是resume的參數(shù)。
同時(shí),resume的第二個(gè)參數(shù)也能傳遞給協(xié)同程序的函數(shù)。
怎么樣?稍微有點(diǎn)點(diǎn)混亂了吧?
沒(méi)關(guān)系喇,更混亂的情況還會(huì)接著發(fā)生的,呵呵。(小若:呵呵你個(gè)頭啊,我走了)
4.協(xié)同程序結(jié)束,主函數(shù)的返回值
這最后一種情況了,那就是協(xié)同程序的函數(shù)返回值,沒(méi)錯(cuò),它也能有返回值。
先看代碼:
我在協(xié)同程序函數(shù)的最后加了一個(gè)返回值,僅僅是一個(gè)字符串。
而resume的調(diào)用我增加到了3次,這是因?yàn)閰f(xié)同程序的for循環(huán)會(huì)執(zhí)行兩次,也就是會(huì)調(diào)用yield兩次。
所以,需要第三次執(zhí)行resume函數(shù)時(shí),第二次yield才能得到返回。
輸出結(jié)果如下:
第三次執(zhí)行resume時(shí),首先就得到了第二次yield的返回,輸出“co:resume param”。
注意一下,這里是不會(huì)繼續(xù)執(zhí)行print(name);這句代碼的,也就是說(shuō),整個(gè)協(xié)同程序函數(shù)的for循環(huán)是不會(huì)被執(zhí)行的。
這里僅僅是第二次的yield函數(shù)返回了結(jié)果,這個(gè)可不能理解錯(cuò)了。
最后,協(xié)同程序函數(shù)返回一個(gè)字符串,這個(gè)字符串做成為resume函數(shù)的第二個(gè)返回值。
是的,當(dāng)協(xié)同程序執(zhí)行完畢時(shí),resume的第二個(gè)返回值就不再是yield的參數(shù)了。
5.結(jié)束
好了,這就是我今天不小心掃了幾眼后,就不得不仔細(xì)研究的地方了。
雖然暫時(shí)還沒(méi)了解這些規(guī)則的實(shí)際應(yīng)用,但,這必須得記錄下來(lái),因?yàn)槲液芸炀蜁?huì)混亂,到時(shí)候還得回頭看這篇文章吧~
好吧,已經(jīng)9點(diǎn)了…美好的周五晚上T_T
標(biāo)簽:新余 嘉峪關(guān) 江西 武漢 黑龍江 延邊 宜賓 張掖
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中的協(xié)同程序之resume-yield間的數(shù)據(jù)返回研究》,本文關(guān)鍵詞 Lua,中的,協(xié)同,程序,之,resume-yield,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。上一篇:Lua中的協(xié)同程序探究
下一篇:Go語(yǔ)言異常處理案例解析