第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

lua中的泛型for用法為什么會直接使用talbe?

lua中的泛型for用法為什么會直接使用talbe?

開心每一天1111 2019-04-14 10:08:58
lua中的泛型for用法為什么會直接使用talbe?
查看完整描述

2 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個贊

原因如下:

for i,v in pairs(t) do ... end,這其實(shí)只是泛型for的普通用法,for有2種用法第一種是 for i = 1,10,1 do print(i) end 這種 當(dāng)計數(shù)器用的。

第二種是泛型for,for a,b,c,d,e in fun1(para) do ... end。

等價于,local fun2 = fun1(para),while true do a,b,c,d,e = fun2(), if a then,break else ......(這里就是上面寫在do里面的內(nèi)容) end,這里要求的就是fun1的返回值必須是一個迭代函數(shù) 不然就計算不完了。

lua中的泛型for直接使用talbe的原因:

當(dāng)我在工作中使用lua 進(jìn)行開發(fā)時,發(fā)現(xiàn)在lua 中有4種方式遍歷一個table ,當(dāng)然,從本質(zhì)上來說其實(shí)都一樣,只是形式不同。

XXX 15. end 前兩種是泛型遍歷,后兩種是數(shù)值型遍歷。當(dāng)然你還會說lua 的table 遍歷還有很多種方法啊,沒錯,不過最常見的這些遍歷確實(shí)有必要弄清楚。

這四種方式各有特點(diǎn),由于在工作中我?guī)缀趺刻於紩褂帽闅vtable 的方法,一開始也非常困惑這些方式的不同,一段時間后才漸漸明白,這里我也是把自己的一點(diǎn)經(jīng)驗(yàn)告訴大家,對跟我一樣的lua 初學(xué)者也許有些幫助(至少當(dāng)初我在寫的時候在網(wǎng)上就找了很久,不知道是因?yàn)榇笈兌颊J(rèn)為這些很簡單,不需要說,還是因?yàn)槲冶?,連這都要問)。

準(zhǔn)確來說lua 中的table 更加像是C++中的map ,通過Key 對應(yīng)存儲Value ,但是并非順序來保存key-value 對,而是使用了hash 的方式,這樣能夠更加快速的訪問key 對應(yīng)的value ,我們也知道hash 表的遍歷需要使用所謂的迭代器來進(jìn)行,同樣,lua 也有自己的迭代器,就是上面4種遍歷方式中的pairs 和ipairs 遍歷。

但是lua 同時提供了按照key 來遍歷的方式(另外兩種,實(shí)質(zhì)上是一種),正式因?yàn)樗峁┝诉@種按key 的遍歷,才造成了我一開始的困惑,我一度認(rèn)為lua 中關(guān)于table 的遍歷是按照我table 定義key 的順序來的。



查看完整回答
反對 回復(fù) 2019-04-15
?
郎朗坤

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個贊

泛型方法:
  是否擁有泛型方法,與其所在的類是否泛型沒有關(guān)系。要定義泛型方法,只需將泛型參數(shù)列表置于返回值前。如:
public class ExampleA {
 public <T> void f(T x) {
  System.out.println(x.getClass().getName());
 }
 public static void main(String[] args) {
  ExampleA ea = new ExampleA();
  ea.f(" ");
  ea.f(10);
  ea.f('a');
  ea.f(ea);
 }
}
輸出結(jié)果:
java.lang.String
java.lang.Integer
java.lang.Character
ExampleA
  使用泛型方法時,不必指明參數(shù)類型,編譯器會自己找出具體的類型。泛型方法除了定義不同,調(diào)用就像普通方法一樣。
  需要注意,一個static方法,無法訪問泛型類的類型參數(shù),所以,若要static方法需要使用泛型能力,必須使其成為泛型方法。




查看完整回答
反對 回復(fù) 2019-04-15
  • 2 回答
  • 0 關(guān)注
  • 730 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號