Lua學習筆記(4)——函數(shù)

1.函數(shù)是一種對語句和表達式進行抽象的主要機制环葵。既可以完成某項特定的任務采呐,也可以只做一些計算并返回結果茴厉。

2.函數(shù)的所有參數(shù)需要放到一對圓括號中旅掂,即使沒有函數(shù)也必須寫出一對空的括號赏胚。但是有一種特殊的例外情況:一個函數(shù)若只有一個參數(shù),并且這個參數(shù)是一個字面字符串或table構造式商虐,那么圓括號可有可無觉阅。

圓括號的例外情況

3.Lua為面向對象式的調用也提供了一種特殊的語法——冒號操作符。o.foo()的另一種寫法是o:foo()秘车。

4.函數(shù)中的形參個數(shù)與實參個數(shù)不一致時典勇,“若實參多于形參,則舍棄多余的實參叮趴;若實參不足割笙,則多余的形參初始化為nil∶幸啵”

實參與形參的關系

多重返回值

1.Lua允許函數(shù)返回多個結果伤溉。

查找數(shù)組中的最大元素般码,并返回該元素的位置

2.只有當一個函數(shù)調用是一系列表達式中的最后一個元素或僅有一個元素時,才能獲得它的所有返回值谈火。這里所謂的“一系列”表達式值得是4種情況:多重賦值侈询、函數(shù)調用時傳入的實參列表,table構造式和return語句糯耍。

定義函數(shù)
多重賦值中扔字,foo2是最后一個表達式,那么會保留盡可能多的返回值
若沒有足夠的返回值温技,就用nil補缺
若一個函數(shù)調用不是最后一個表達式就返回一個值
丟棄多余的值
一個函數(shù)調用作為實參
函數(shù)調用為最后一個或僅有一個表達式時革为,table構造式接受所有返回值
反之,接收第一個返回值
return 函數(shù)中的值
再加一對圓括號可迫使它只有一個返回結果

3.unpack舵鳞,特殊函數(shù)震檩,接受一個數(shù)組作為參數(shù),并從下標1開始返回該數(shù)組的所有元素:

unpack

變長參數(shù)

1.(...)三個點表示該函數(shù)可接受不同數(shù)量的實參蜓堕,即“變長參數(shù)”抛虏。變長參數(shù)前可以擁有任意數(shù)量的固定參數(shù),但固定參數(shù)必須放在變長參數(shù)前套才。

返回所有參數(shù)的總和

2.當一個函數(shù)要訪問它的變長參數(shù)時迂猴,仍需用到三個點,但此時它是作為表達式的背伴。表達式{...}表示一個由所有變長參數(shù)構成的數(shù)組沸毁。

變長參數(shù)模擬普通的參數(shù)傳遞
多值恒定式(multi_value identity)

3.Lua提供了專門用于格式化文本(string.format)和輸出文本的函數(shù)(io.write)。

合二為一

4.在fwrite函數(shù)中傻寂,Lua會將實參先賦予固定參數(shù)息尺,余下的視為變長參數(shù)。

函數(shù)調用及參數(shù)對應

5.當變長參數(shù)中含有nil值時疾掰,需要用函數(shù)select來訪問變長參數(shù)搂誉,select(selector , ...)。如果selector為數(shù)字n静檬,函數(shù)返回變長參數(shù)的第n個可變實參勒葱;否則selector只能為字符串“#”,返回變長參數(shù)的總數(shù)(包括nil)巴柿。

用select遍歷一個函數(shù)的所有變長參數(shù)

具名實參

1.Lua中的參數(shù)傳遞機制是具有“位置性”的凛虽,及實參是通過在參數(shù)表中的位置與形參相匹配。但有時需要通過名稱來指定實參广恢,就需要函數(shù)能接受具有名稱的實參凯旋,此時就用到了table。

具名實參

2.示例,window函數(shù)有一些必填參數(shù)至非,但是大部分參數(shù)是可選的钠署,此時就需要用具名實參。對必填參數(shù)進行檢查荒椭,或者為某些參數(shù)填默認值谐鼎。假設_window是真正用于創(chuàng)建新窗口的函數(shù),它具有“位置性”趣惠。那么window函數(shù)如下:

創(chuàng)建窗口函數(shù)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末狸棍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子味悄,更是在濱河造成了極大的恐慌草戈,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侍瑟,死亡現(xiàn)場離奇詭異唐片,居然都是意外死亡,警方通過查閱死者的電腦和手機涨颜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門费韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庭瑰,你說我怎么就攤上這事揽思。” “怎么了见擦?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羹令。 經常有香客問我鲤屡,道長,這世上最難降的妖魔是什么福侈? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任酒来,我火速辦了婚禮,結果婚禮上肪凛,老公的妹妹穿的比我還像新娘堰汉。我一直安慰自己,他們只是感情好伟墙,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布翘鸭。 她就那樣靜靜地躺著,像睡著了一般戳葵。 火紅的嫁衣襯著肌膚如雪就乓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音生蚁,去河邊找鬼噩翠。 笑死,一個胖子當著我的面吹牛邦投,可吹牛的內容都是我干的伤锚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼志衣,長吁一口氣:“原來是場噩夢啊……” “哼屯援!你這毒婦竟也來了?” 一聲冷哼從身側響起蠢涝,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤玄呛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后和二,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徘铝,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年惯吕,在試婚紗的時候發(fā)現(xiàn)自己被綠了惕它。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡废登,死狀恐怖淹魄,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情堡距,我是刑警寧澤甲锡,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站羽戒,受9級特大地震影響缤沦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜易稠,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一缸废、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驶社,春花似錦企量、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至份乒,卻和暖如春姆泻,著一層夾襖步出監(jiān)牢的瞬間零酪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工拇勃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留四苇,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓方咆,卻偏偏與公主長得像月腋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瓣赂,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容

  • 1.1程序塊:Lua執(zhí)行的每段代碼榆骚,例如一個源代碼文件或者交互模式中輸入的一行代碼,都稱為一個程序塊 1.2注釋:...
    c_xiaoqiang閱讀 2,585評論 0 9
  • Nginx API for Lua Introduction ngx.arg ngx.var.VARIABLE C...
    吃瓜的東閱讀 5,717評論 0 5
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,506評論 1 51
  • 橙子這周有兩天拉肚子煌集。水狀噴射物妓肢,但是人的狀態(tài)還不錯。 橙子最近喜歡到任何能放東西的物品里小便苫纤,小安全帽里碉钠,小車斗...
    夏秋愛畫閱讀 187評論 0 0
  • 傳頌者, 你是一個怎樣的存在 為什么歌頌了別人的快樂卷拘,卻 埋葬了自己的寂寞 看客喊废,不愿觸摸你的生活 聽眾,陶醉于你...
    逍四葉閱讀 136評論 3 2