表格範圍區塊 |
|
A = {} using A in foo = 5; bar = "Hello World"; end write(A.foo, A.bar) -- Will print out "5Hello World"
執行的基本方法是,在區塊內用表格範圍取代全域範圍。因為這是個區塊,所以可以保證永不會失去全域範圍。
這在 Lua 的物件導向實作中會很有用,可以更善用自己。如果你將自己放在範圍內,它就會更像「C」
function A:foo(x) local y bar = x -- Sets self.bar to x [and where comes x from? --ET] y = x -- Sets local variable y self.y = x -- Sets self.y end
也許可以完成這個範例,以顯示如何設定標籤
這需要使用標籤函式,其中會在實際函式呼叫周圍加入 using 區塊。
建立 Lua 套件時,這也能派上用場。在 Python 中,如果某個模組使用全域範圍,實際上就是進入模組字典中的變數。稍微處理一下,就能使用「using..in」區塊建立同樣的效果。
還有個問題是,這將如何配合作為假設變數為區域以上建議。
2. 我發現在 C++ 中,你無法查看識別碼是類別成員還是全域,這很令人困擾。你必須查看類別定義。撰寫 self.x 就會清楚表示進入的是欄位,而不是全域。我同意。許多 C++ 程式設計師甚至使用慣例,將所有成員變數都以 m_ 開頭,清楚表示使用時進入的是成員變數。--PeterPrade
--ET
tab = { tab2={ x=3 } } do local t = tab.tab2 print (t.x) t.x = 4 end print (t) -- nil as out of scope now
--NDT