校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua中函數的幾個特別之處探究

Lua中函數的幾個特別之處探究

熱門標簽:如何利用高德地圖標注家 揚州電銷外呼系統軟件 上海企業外呼系統排名 百度地圖標注位置網站 武漢百應人工智能電銷機器人 400手機電話免費辦理 電腦外呼系統輻射大嗎 智能語音電銷的機器人 開通400電話申請流程

沒想到距離上一篇基礎補充已經過了1年多了,最近準備撿回Lua,把基礎都補補,今天來聊聊Lua的函數吧~

0.環境

我突然對Lua又大感興趣的最主要原因是,Cocos Code IDE開始浮出水面了,它是Cocos2d-x官方出的一款專門針對Cocos2d-x+Lua或JS的IDE,試著用了,雖然不能說很完美,但,很值得期待。

所以,本文使用的Lua編輯器就選它了,大家就隨意吧~

1.掃盲——Lua的函數

Lua要創建和調用函數都十分簡單,如代碼:

復制代碼 代碼如下:

function mutou()
print("這絕對不是廣告:www.jb51.net");
end

這就創建了一個函數了,調用函數也十分簡單:
復制代碼 代碼如下:

mutou();

然后運行,就能看到輸出了,print也是一個函數,唉,不多嘮叨了。

2.掃盲——函數的參數

剛剛的mutou函數,我們修改一下參數,如代碼:

復制代碼 代碼如下:

function mutou(name, age)
print(name);
print(age);
end

我們給mutou添加兩個參數,一個是name,代表名字,一個是age,代表年齡。
順便一提,Lua是沒有變量類型這一說法的,變量會根據賦予的值而展現出不一樣的類型。
 
我們試試這樣調用mutou函數:

復制代碼 代碼如下:

mutou("木頭", 25);

然后運行,輸出如下:
復制代碼 代碼如下:

[LUA-print] 木頭
[LUA-print] 25

很正常,我喜歡~

3.海量的心——函數參數個數自適應

Lua的函數心胸比較寬廣,對于我們傳遞進去的參數,全部都會忍受,但,它會按照它的規則進行篩選。
 
繼續剛剛那個mutou函數,我們試試這樣調用:

復制代碼 代碼如下:

mutou("木頭");

少給了一個參數,但,這和C++或者Java等語言不一樣,它不會造成編譯錯誤,仍然可以正常運行。輸出如下:
復制代碼 代碼如下:

[LUA-print] 木頭
[LUA-print] nil

對于缺少的參數,它會自動用nil來代替。
 
再然后,既然可以少給參數,那自然也可以多給參數了,試試這樣調用:
復制代碼 代碼如下:

mutou("木頭", 25, "旁白", 45);

(小若:你才45歲!你全身細胞都是45歲!)
輸出如下:
復制代碼 代碼如下:

[LUA-print] 木頭
[LUA-print] 25

結果自然是,多出參數會被舍去。
至于這是好事還是壞事,就看是誰使用了~

4.多重返回值

沒錯,Lua似乎把我們想要的能偷懶的所有事情都給想到了,并且給實現了。

Lua的函數支持返回多個值,繼續修改mutou函數,如下:

復制代碼 代碼如下:

function mutou(name, age)
return name, age;
end

把傳進去的兩個參數又給return回來了,試試這樣調用:
復制代碼 代碼如下:

local name = mutou("木頭", 25);
print(name);

調用mutou函數,并且用一個變量保存返回值,輸出結果為:
復制代碼 代碼如下:

[LUA-print] 木頭

 
因為我們只用了一個變量來保存返回值,所以即使函數返回了兩個值,我們也只能獲取到一個,要想獲取到兩個值,就十分簡單了,如下:
復制代碼 代碼如下:

local name, age = mutou("木頭", 25);
print(name .. ":" .. age);

輸入結果如下:
復制代碼 代碼如下:

[LUA-print] 木頭:25

又順便一提,用符號“..”可以連接字符串,這里就不多說了~
 
返回值和參數一樣,如果我們嘗試用三個變量去獲取函數返回值,也不會造成編譯錯誤,如下:
復制代碼 代碼如下:

local name, age, hehe = mutou("木頭", 25);
print(name .. ":" .. age);
print(hehe);

輸入如下:
復制代碼 代碼如下:

[LUA-print] 木頭:25
[LUA-print] nil

對于多出的變量,會賦予nil值,雖然這不會造成編譯錯誤,但是也可能會造成運行時錯誤。

比如,用“..”符號去連接nil值,就會報錯。

5.多重返回值的特點1——必須是表達式的最后一個元素

對于有多個返回值的函數,不一定所有情況下都能返回多個值。

先來看這樣一種特別的情況,仍然是剛剛的mutou函數,我們這樣調用:

復制代碼 代碼如下:

local a, b, c = "first", mutou("木", 25);
print(a);
print(b);
print(c);

輸出結果如下:
復制代碼 代碼如下:

[LUA-print] first
[LUA-print] 木
[LUA-print] 25

沒錯,Lua的賦值語句是支持逗號表達式的(也就是用多個值給多個變量賦值),排在前面的值自然就優先賦給變量,所以變量a的值就是”first”。
不過,這不是重點~(小若:那你還說個毛線啊!)
 
重點是,我們把順序調換一下,如下:
復制代碼 代碼如下:

local a, b, c =  mutou("木", 25), "first";
print(a);
print(b);
print(c);

輸出結果會出乎大家的意料:
復制代碼 代碼如下:

[LUA-print] 木
[LUA-print] first
[LUA-print] nil

沒錯,mutou函數的返回值變成只有一個了,這就是函數的特點之一:如果函數的調用不是在表達式的最后一個元素,則,最多只返回一個值。
 
什么?還不夠清晰嗎?那再來舉個粒子(小若:粒子你個頭啊!)
我們這樣調用函數…額,那個,我們繼續下一條內容。(小若:舉不出例子那你剛剛還激動個毛線啊!)

6.多重返回值的特點2——強制返回一個值

某些情況下,我們可能會對于一個函數感到厭煩,沒錯,為什么你總是返回多個值?!(小若:還不是你自己寫的函數嗎!)
 
如果想讓某個函數強制只返回一個值,可以這么做:

復制代碼 代碼如下:

local a, b = (mutou("木", 25));
print(a);
print(b);

輸入結果如下:
復制代碼 代碼如下:

[LUA-print] 木
[LUA-print] nil

 
我們只需要在函數調用時,把函數調用放在括號中就可以了。

7.名字參數/具名實參/named arguments

最后,我們來看看比較實用的一種函數參數——名字參數。

其實“名字參數”是我自己的叫法,《Lua程序設計》第二版中是稱之為“具名實參”,但我看到英文單詞以及用法之后,我還是比較傾向于稱之為“名字參數”。
 
先來問大家一個問題,我們剛剛一直在討論的mutou函數,有多少個參數,不要回去看,1秒鐘內回答~(小若:2個!)

第二個問題,mutou函數的age和name參數哪個在前哪個在后?0.001秒內回答!(小若:回答你個頭啊!)
 
沒錯,我們有時候并不記得一個函數的參數順序,倒底age是第一個參數呢,還是name是第二個參數?(小若:好像哪里不對…)
 
于是,具名實參就派上用場了。
我們修改一下mutou函數:

復制代碼 代碼如下:

function mutou(args)
return args.name, args.age;
end

現在mutou函數的參數變成了一個table,它要求table中包含name和age兩個值。
 
于是,我們調用mutou函數的方式就變成了這樣:
復制代碼 代碼如下:

local args = {name = "木", age = 25};
print(mutou(args));

沒錯,傳遞一個table變量給mutou函數就可以了,由于函數在取參數值的時候,是根據table的key值來獲取的,根本就不需要考慮參數順序,這就解決了我們剛剛所說的順序問題了。

8.結束

好了,關于函數的基礎特性,就這么多了,當然,還有一個變長參數我沒有提到,因為這好像沒什么好提的~
 
最近我在計劃堅持一件事情,那就是:晚上不寫游戲,哪怕遇到讓人興奮的Bug。
我想把晚上的時間都拿來充電,我的基本功實在是不夠用了,有點搖搖欲墜的感覺。
 
近期是計劃把《Lua程序設計》這本書過一遍,希望能堅持~
計劃是每晚花一小時看書,花一小時整理教程。
 
今天是第一天,很累,寫教程比寫游戲累多了。
有句什么話來著,永遠不要讓自己處于舒適的范圍里,好吧,堅持…
(小若:用個毛線的省略號啊!用感嘆號啊!這樣才代表你有決心…)
 
我說,小若,那為什么你最后也用了省略號…

您可能感興趣的文章:
  • Lua中調用C++函數實例
  • C++中調用Lua函數實例
  • Lua學習筆記之表和函數

標簽:武漢 新余 延邊 江西 宜賓 黑龍江 嘉峪關 張掖

巨人網絡通訊聲明:本文標題《Lua中函數的幾個特別之處探究》,本文關鍵詞  Lua,中,函數,的,幾個,特別,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中函數的幾個特別之處探究》相關的同類信息!
  • 本頁收集關于Lua中函數的幾個特別之處探究的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产美女精品一区二区三区| 香蕉影视欧美成人| 久久精品一区蜜桃臀影院| 91精品婷婷国产综合久久竹菊| 欧美性欧美巨大黑白大战| 色猫猫国产区一区二在线视频| 色香蕉成人二区免费| 色先锋资源久久综合| 欧美男女性生活在线直播观看| 欧美亚洲国产一卡| 欧美一卡二卡三卡| 久久丝袜美腿综合| 亚洲私人黄色宅男| 亚洲成人av一区二区三区| 人人超碰91尤物精品国产| 国产一区久久久| caoporm超碰国产精品| 欧美性xxxxxx少妇| 日韩精品综合一本久道在线视频| 久久亚洲综合av| 国产精品美女久久久久久| 一区二区三区在线免费播放| 天天综合天天做天天综合| 国产一区二区在线影院| 99精品国产一区二区三区不卡| 欧美伊人精品成人久久综合97| 日韩一区二区三区精品视频| 久久久久久久久久久久电影 | 亚洲成人动漫一区| 久久99精品国产麻豆不卡| 99久久久久免费精品国产| 91精品在线一区二区| 国产精品灌醉下药二区| 日韩电影一区二区三区四区| 国产经典欧美精品| 欧美日韩一区二区在线观看 | 在线欧美一区二区| 欧美一区二区观看视频| 国产精品天美传媒沈樵| 免费成人在线影院| 在线亚洲+欧美+日本专区| 久久免费视频色| 午夜婷婷国产麻豆精品| www.久久精品| 久久蜜桃香蕉精品一区二区三区| 亚洲一二三区不卡| jlzzjlzz欧美大全| 久久久久国色av免费看影院| 视频在线观看91| 91在线播放网址| 久久国产夜色精品鲁鲁99| 91麻豆精品国产91| 成人免费视频视频在线观看免费| 艳妇臀荡乳欲伦亚洲一区| 国产一区二区在线观看免费| 欧美最猛性xxxxx直播| 久久精品在线观看| 国产一区二区在线影院| 91精品午夜视频| 婷婷开心激情综合| 欧美最新大片在线看 | 成人黄色大片在线观看| 精品国产伦理网| 毛片不卡一区二区| 日韩午夜激情电影| 蜜臀av一区二区在线观看| 欧美亚洲综合久久| 亚洲一二三四在线观看| 日本韩国欧美一区| 亚洲精品日韩综合观看成人91| a美女胸又www黄视频久久| 国产农村妇女精品| 国产91精品露脸国语对白| 久久精品一区八戒影视| 国产福利一区二区三区视频 | 国产精品久久网站| 成人性生交大片免费看中文| 国产精品久久久久久久久免费桃花| 国产电影精品久久禁18| 国产午夜亚洲精品午夜鲁丝片| 国内国产精品久久| 亚洲国产高清aⅴ视频| 99国产精品一区| 亚洲午夜一区二区三区| 91精品国产高清一区二区三区蜜臀 | 日韩视频不卡中文| 国产一区在线不卡| 国产精品国产三级国产aⅴ中文 | 亚洲成a人片在线不卡一二三区| 欧美日韩精品一区二区三区蜜桃 | 成人综合在线网站| 亚洲蜜臀av乱码久久精品| 欧美伊人久久久久久久久影院 | 亚洲精品大片www| 欧美群妇大交群中文字幕| 麻豆精品国产传媒mv男同| 精品国产一区二区三区忘忧草| 国产又粗又猛又爽又黄91精品| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲三级理论片| 精品视频123区在线观看| 美女网站一区二区| 综合精品久久久| 欧美精品久久99久久在免费线| 久久aⅴ国产欧美74aaa| 亚洲欧洲日产国码二区| 欧美精品一卡两卡| 高清成人免费视频| 亚洲成人动漫在线观看| 久久精品免费在线观看| 欧美日韩国产首页| 国产成人精品免费在线| 亚洲图片欧美一区| 久久久久国产精品麻豆ai换脸| 91福利国产精品| 国产成人免费在线视频| 丝袜亚洲另类欧美| 亚洲欧美二区三区| 亚洲精品在线一区二区| 欧美日韩你懂得| 成人18视频在线播放| 久久精品国产亚洲aⅴ| 一区二区三区不卡视频| 国产日韩欧美精品在线| 51久久夜色精品国产麻豆| 91片在线免费观看| 国产69精品久久99不卡| 免费人成精品欧美精品| 亚洲综合色网站| 国产精品国产三级国产普通话三级 | 在线播放国产精品二区一二区四区| 国产精品99久久久久久久女警 | 亚洲国产毛片aaaaa无费看 | 国产激情一区二区三区四区| 日韩精品一卡二卡三卡四卡无卡| 亚洲欧美电影院| 国产精品不卡一区二区三区| 久久网站最新地址| 久久综合色8888| 日韩精品一区二区三区swag| 欧美一区永久视频免费观看| 欧美日韩国产成人在线91| 欧美三级日韩三级| 在线免费av一区| 欧美性受极品xxxx喷水| 欧美日韩一级视频| 欧美性猛交xxxxxxxx| 在线观看三级视频欧美| 色伊人久久综合中文字幕| 色噜噜狠狠成人网p站| 91国内精品野花午夜精品| 91一区一区三区| 91国产丝袜在线播放| 欧美中文字幕不卡| 欧美裸体bbwbbwbbw| 555www色欧美视频| 精品国产伦一区二区三区观看方式| 欧美r级电影在线观看| 欧美成人在线直播| 国产欧美日韩卡一| 国产精品久久久久久久久免费桃花| 国产精品久久久久aaaa| 综合色中文字幕| 亚洲成av人片在线观看无码| 肉色丝袜一区二区| 国模套图日韩精品一区二区| 国产成a人亚洲精品| 91影视在线播放| 欧美日本韩国一区二区三区视频 | 波多野结衣在线一区| 成人国产电影网| 91久久精品一区二区三| 欧美一级夜夜爽| 国产女人18毛片水真多成人如厕 | 成人精品国产一区二区4080| 99国产一区二区三精品乱码| 91麻豆精品久久久久蜜臀| 欧美白人最猛性xxxxx69交| 中文字幕av在线一区二区三区| 亚洲欧美一区二区三区极速播放| 亚洲大片精品永久免费| 国产乱子轮精品视频| 91在线看国产| 日韩一区二区三区在线| 亚洲天堂福利av| 免费成人在线观看| 99re这里只有精品6| 日韩美女视频在线| 最近日韩中文字幕| 国产一区二区福利视频| 欧美午夜电影网| 欧美激情一区二区三区蜜桃视频| 有坂深雪av一区二区精品| 国产一区二区在线观看免费 | 欧美mv日韩mv国产网站app| 日韩美女视频一区| 国产精品99久久久久久有的能看| 精品视频一区二区三区免费| 欧美国产日产图区| 国精产品一区一区三区mba桃花|