作者個人網站:http://www.harddone.com
最近在更新一個Lua項目中,很多地方調用了同一個方法,想在不改動調用邏輯的情況下,如何不執行原來的方法邏輯,而執行新的方法邏輯呢?
我們可以直接重載該方法,但是前提是必須在第一次調用該方法前就完成了重載。
請注意這種方式的前提:一定是要在該方法第一次被調用前完成你的重載,否則無效。
舉例說明: ads_plugin_manager是一個全局對象,在其類文件中已經實現了方法showBanner的邏輯,項目中許多直接調用ads_plugin_manager:showBanner()。現在我想不改動任何調用該方法地方的代碼。怎么操作?
- 創建lua文件:OverrideAdsPluginManager.lua
ads_lua_manager.showBanner = function(...)
--override start
-- 請注意,如果方法實現需要訪問類的其他方法或者變量,都可以通過ads_lua_manager.xxx的方式直接調用
-- override end
end
- 盡早引用OverrideAdsPluginManager.lua
require "libii/common/OverrideShowBanner"