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