lua學習筆記day02-----函式
當函式只有一個引數的時候,且這個引數是字串或者是表構造的時候。呼叫形式可以如下:
print"hello word" type{}
函式的形參和實參匹配的時候,和多值賦值是一樣的,實參多餘的部分會捨棄,少的部分會用nil填上
多值返回 :
function foo2 ()
return 4,5
end
當函式被獨立呼叫的時候(類似:foo2()),它的返回值將被忽略。
當函式作為表示式被掉用的時候有兩種情況:
1、函式作為這個表達表示式的唯一引數,或者時最後一個引數,它會盡可能多的返回值。
PS:
x=foo2() ==> x = 4
x,y=foo2() ==> x=4,y=5
x,y,z = foo2() ==> x=4,y=5,z=nil
print (10,foo2()) ==> 10,4,5
2、其他情況下,foo2只返回第一個值
PS:print(foo2(),10) ==> 4,10
function foo(i)
if i==1 then return foo1()
elseif i==2 then return foo2()
elseif i==3 then return foo3()
end
end
像上述這種情況,foo*是在另一個函式的return語句中的。
如果單純的呼叫foo(i),那麼foo*()是返回所有的值的。
如果是(foo(i)),這麼呼叫,那麼foo*()只返回第一個值。
如果在return語句之後加括號,例如 return(foo2()),也會導致foo2()只返回第一個值。
可變引數 :
在函式的形參中可以通過 ... 來表示一個函式還擁有其他未知的引數。
PS :test(x,...)
在呼叫test的時候,會把第一個實參放到x中,剩下的實參會放到test 的arg表中,arg表還包含一個recod 記錄具體實參的個數。
PS: test (10,9,8) x=10, arg={9,8,n=2}
可以通過操作arg表來把函式的實參讀取出來,給其他函式用。
(ps:這個例子我在虛擬機器上沒有嘗試成功,需要之後回頭再看)
找到原因了,在lua5.2版本里,已經取消了這個預設的arg表,如果要使用可變部分的引數,需要顯式的宣告一個表去接受,例如:
function test(...)
arg = {...}
...
end
命名引數 :
因為lua是可以將表作為函式的引數的,所以可以通過表的索引來指定表中的某個元素的值。
PS:假設test是可變引數,且有具體實現
function test(arg)
return test(arg.one,arg.two)
end
這個時候呼叫test,它的引數就可以用以下方式填寫
test{”one“=big,“two”=small}
這種方法的好處在於,不需要記住引數的位置,且每個元素有個性化的索引,非常直觀的知道哪個引數,需要帶入什麼值。
相關推薦
lua學習筆記day02-----函式
當函式只有一個引數的時候,且這個引數是字串或者是表構造的時候。呼叫形式可以如下: print"hello word" type{} 函式的形參和實參匹配的時候,和多值賦值是一樣的,實參多餘的部分會捨棄,少的部分會用nil填上 多值返回 : function foo
lua學習筆記day02-----基本語法
第4章賦值 :lua支援多值賦值。PS:a,b=4,5多值賦值,先計算等號右邊的值,計算完才開始賦值,所以有以下特殊應用:a,b=b,a當等號左邊變數的數量和等號右邊的數值個數不想等時,按照以下規則進行賦值。左邊>右邊:a,b,c=1,2 ==> a=1,b=
lua學習筆記---Function(函式)
function 我暫且叫他函式,類似於C語言中的指標,但是比指標更強大。 形式: function –關鍵字 函式名(引數列表) return 分支 end 例如: function add(a,b) return a
lua學習筆記之函式
Lua學習筆記之函式 1、 函式的作用 函式主要完成指定的任務,這樣的情況下函式作為呼叫語句使用,函式可以計算並返回值,這樣的情況下函式作為賦值語句的表示式使用。 語法: funcationfunc_name(arguments-list) Statements-list
Lua學習筆記(函式)
使用函式 建立函式 function關鍵字用於建立新的函式,可以將其存放在一個變數中,或直接呼叫。 例: >hello = function() >>print("Hello World!") >>
Nodejs學習筆記 day02——REPL和回撥函式
1、REPL(互動式直譯器): Node自帶互動式直譯器: 讀取使用者輸入 ==> 執行輸入的資料結構 ==> 列印輸出結果(迴圈執行,直到使用者按ctrl+c兩下後結束) 變數: var x = 10 //宣告變數並賦值,如果沒有
Lua學習筆記(6): 函式
Lua的函式 函式用於簡化程式,當某些工作需要重複執行的時候就可以使用函式減輕工作量(雖然複製貼上也行) 語法: function 函式名(引數列表) 函式體 return 返回值 end --結束標誌 function識別符號用於宣告函式,函式的返回
lua學習筆記14:函式多返回值
Lua中函式可以返回多個值,為了說明不同情況下,返回值的個數,我們先宣告如下幾個函式:-- 無返回值 function fun0() end -- 一個返回值 function fun1()
Lua學習筆記函式
數字型for 的格式,exp3預設為1 for var=exp1 , exp2 , exp3 do <執行體> end 泛型for迭代的型別,標準庫中提供了幾種迭代器: io.lines() 用於迭代檔案中每行 pairs() 迭代table中元素 ipairs() 迭代
Lua學習筆記 第六章 深入函式
在Lua中,函式是一種第一類值,它們具有特定的詞法域; 第一類值表示函式與其他傳統型別的值具有相同的權利,函式可以儲存到變數中或table中, 可以作為實參傳遞給其他函式,還可以作為其他函式的返回值; 詞法域是指一個函式可以巢狀在另一個函式中,內部的函式可以訪問外部函式中的
Lua學習筆記--函式初探
感覺學習語言的話,函式是個重頭戲。來看一下Lua的函式是神馬樣紙的東東! 一.簡單的函式例子 --一個簡單的函式:階乘 function factorial(num) if num == 0 th
【lua學習筆記】——2在sublime中配置Lua運行環境
author command ges () 作者 ctrl+ bindings text inf 一、讓Sublime可以運行lua腳本 打開sublime 選擇tools-->Build System-->New Build System 在新出現的文件中
lua學習筆記1 環境配置
http windows 安裝完成 顯示 get 技術分享 開發平臺 org www 1 開發平臺 windows7 64位 2 下載鏈接 http://www.lua.org/download.html 3 安裝完成-環境配置 4 運行 WIN+R 運行
Python學習筆記DAY3---函式
關於函式,程式設計哪裡少的了函式,Python裡的函式呢,使用def 來定義,如下例子: def fun(): print('這是一個函式') &nb
Python學習筆記(二) 函式
1.內建函式 Python有很多自帶的函式,在api裡很容易找到 菜鳥教程的Python內建函式講的也不錯 這裡先試試幾個能猜的出作用的簡單函式 函式名 描述 abs() 返回數字的
tensorflow學習筆記各個函式解析
弄清以下問題的含義: 1. tf.train.global_step 獲取全域性訓練步數, 由 各種損失函式優化器中的minimize()方法負責自動加1 sess.run( fetches, feed_dict=None, o
C++學習筆記2_函式.函式指標
1. 行內函數void printAB(int a,int b){ cout<<(a)<<(b)<<endl;}int main(void){ for(int i=0;i<1000;i++) { int j=i+1; printAB(i,j
前端學習筆記day02 CSS盒子模型
1. 製作導航欄: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Document</title> <
C++學習筆記——虛擬函式
用virtual關鍵字說明的函式是虛擬函式,是實現執行時多型的基礎,C++中的虛擬函式是動態繫結的函式,且必須是非靜態的函式成員,虛擬函式經過派生之後就可以實現執行過程中的多型。 一般成員函式可以是虛擬函式,建構函式不可以是虛擬函式,解構函式可以是虛擬函式。 虛擬函式的宣告格式: vir
C++學習筆記——建構函式例項
/************************************************************************************************************************************************ 1.&n