function的基本寫法
function max(a, b)
if(a>b) then return a
else return b
end
end
print(max(10, 20))
--> 印出來的結果為 20
但如果這樣寫就會出錯,還不清楚為何…
> local function max(a, b)
>> if(a>b) then return a
>> else return b
>> end
>> end
> print(max(10, 20))
stdin:1: attempt to call global 'max' (a nil value)
stack traceback:
stdin:1: in main chunk
[C]: ?
因為function都是以「傳值」的方式在處理參數,因此會有以下的結果
> function func1(a, b)
>> local tmp = a
>> a = b
>> b = tmp
>> print("change in function:", a, b)
>> end
> x = 1
> y = 2
> func1(x, y)
change in function: 2 1
> print(x, y)
1 2
當傳入function的參數較function定義的參數多時基本上不會有問題,系統會把多的拿掉
> function func2(a, b)
>> print(a, b)
>> end
> func2(1, 2)
1 2
> func2(1, 2, 3, 4)
1 2
又或傳入的參數較function定義的參數少時也不會有問題,系統會自動補 nil進來
> function func3(a, b, c, d)
>> print(a, b, c, d)
>> end
> func3(1, 2)
1 2 nil nil
不固定數量的function參數雖然說可以用,但是我的Lua卻是error的
> funcation func4(...)
stdin:1: '=' expected near 'func4'
沒有留言:
張貼留言