因為工作需求,準備開始學習 C#,這兩天研究一些公開的 Unity 原始碼發現 C# 有個 Delegate Type 很有意思,它可以利用 + 與 - 將需要搭配執行的 function 指派到委任者然後一起執行。如:
參考資料:使用委派 (C# 程式設計手冊)
Edit: 03, 08, 2015, 感謝 fb@shanyungyang 的提醒可以使用 Lua 的 metamethod 實作,為了達到屬性能往下傳,本來是打算採用 * / 但是又怕太混亂,最後就是由另外一個 meta2 來達到效果囉! ^^
FuncDelegate2.lua
這樣拿來組合執行函式實在很方便,所以為了可以在 CoronaSDK 內使用,利用 Lua table 簡單實作類似行為。(當然是沒有辦法寫 + and -,如果不像的話,就是我只實作自己想要的功能啊...XD)
FuncDelegate.lua
//C#, d1 and d2 are functions
allMethodsDelegate += d1;
allMethodsDelegate += d2;
allMethodsDelegate(); // d1(), d2()
allMethodsDelegate -= d2;
allMethodsDelegate(); // d1()
參考資料:使用委派 (C# 程式設計手冊)
Edit: 03, 08, 2015, 感謝 fb@shanyungyang 的提醒可以使用 Lua 的 metamethod 實作,為了達到屬性能往下傳,本來是打算採用 * / 但是又怕太混亂,最後就是由另外一個 meta2 來達到效果囉! ^^
FuncDelegate2.lua
FuncDelegate.lua
Comments
Post a Comment