1. 程式人生 > 實用技巧 >Unity熱更新02-Lua基礎-06-Lua函式

Unity熱更新02-Lua基礎-06-Lua函式

print("**********函式************")
--function 函式名()
--end

--a = function()
--end
print("**********無引數無返回值************")
function F1()
	print("F1函式")
end
F1()
--有點類似 C#中的 委託和事件
F2 = function()
	print("F2函式")
end
F2()

print("**********有引數************")
function F3(a)
	print(a)
end
F3(1)
F3("123")
F3(true)
--如果你傳入的引數 和函式引數個數不匹配
--不會報錯 只會補空nil 或者 丟棄
F3()
F3(1,2,3)
print("**********有返回值************")
function F4(a)
	return a, "123", true
end
--多返回值時 在前面申明多個變數來接取即可
--如果變數不夠 不影響 值接取對應位置的返回值
--如果變數多了 不應 直接賦nil
temp, temp2, temp3, temp4 = F4("1")
print(temp)
print(temp2)
print(temp3)
print(temp4)

print("**********函式的型別************")
--函式型別 就是 function
F5 = function( )
	print("123")
end
print(type(F5))

print("**********函式的過載************")
--函式名相同 引數型別不同 或者引數個數不同
--lua中 函式不支援過載 
--預設呼叫最後一個宣告的函式
function F6()
	print("Unity")
end
function F6(str)
	print(str)
end

F6()

print("**********變長引數************")
function F7( ... )
	--變長引數使用 用一個表存起來 再用
	arg = {...}
	for i=1,#arg do
		print(arg[i])
	end
end
F7(1,"123",true,4,5,6)

print("**********函式巢狀************")
function F8()
	return function()
		print(123);
	end
end
f9 = F8()
f9()

--閉包
function F9(x)
	--改變傳入引數的生命週期
	return function(y)
		return x + y
	end
end

f10 = F9(10)
print(f10(5))