<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 抵制使用module()函數來定義Lua模塊 舊式的模塊定義方式是通過 _module("filename"[,package.seeall])_ 來顯示聲明一個包,現在官方不推薦再使用這種方式。這種方式將會返回一個由_filename_模塊函數組成的 _table_ ,并且還會定義一個包含該 _table_ 的全局變量。 如果只給 _module_ 函數一個參數(也就是文件名)的話,前面定義的全局變量就都不可用了,包括 _print_ 函數等,如果要讓之前的全局變量可見,必須在定義 _module_ 的時候加上參數package.seeall。調用完 _module_ 函數之后,print這些系統函數不可使用的原因,是當前的整個環境被壓入棧,不再可達。 _module("filename", package.seeall)_ 這種寫法仍然是不提倡的,官方給出了兩點原因: 1. _package.seeall_ 這種方式破壞了模塊的高內聚,原本引入"filename"模塊只想調用它的 _foobar()_ 函數,但是它卻可以讀寫全局屬性,例如 _"filename.os"_。 1. _module_ 函數壓棧操作引發的副作用,污染了全局環境變量。例如 _module("filename")_ 會創建一個 _filename_ 的 _table_ ,并將這個 _table_ 注入全局環境變量中,這樣使得沒有引用它的文件也能調用 _filename_ 模塊的方法。 比較推薦的模塊定義方法是: ~~~ -- square.lua 長方形模塊 local _M = {} -- 局部的變量 _M._VERSION = '1.0' -- 模塊版本 local mt = { __index = _M } function _M.new(self, width, height) return setmetatable({ width=width, height=height }, mt) end function _M.get_square(self) return self.width * self.height end function _M.get_circumference(self) return (self.width + self.height) * 2 end return _M ~~~ > 引用示例代碼: ~~~ local square = require "square" local s1 = square:new(1, 2) print(s1:get_square()) --output: 2 print(s1:get_circumference()) --output: 6 ~~~ - 另一個跟lua的module模塊相關需要注意的點是,當lua_code_cache on開啟時,require加載的模塊是會被緩存下來的,這樣我們的模塊就會以最高效的方式運行,直到被顯式地調用如下語句: ~~~ package.loaded["square"] = nil ~~~ 我們可以利用這個特性代碼來做一些進階玩法。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看