2016-05-02 29 views
1

在Lua中跨文件分割單個類的多個函數的正確方法是什麼?如何在Lua中的多個文件中分割單個類的功能?

在下面的例子中,我想將數學和拼寫功能分離到不同的文件中。

CardsScene = Core.class(Sprite) 

function CardsScene:basicMathInit() 
end 

function CardsScene:basicMathIdle() 
end 

function CardsScene:basicMathAnswer() 
end 

function CardsScene:basicSpellingInit() 
end 

function CardsScene:basicSpellingIdle() 
end 

function CardsScene:basicSpellingAnswer() 
end 

回答

1

假設您沒有在您的任何文件中聲明CardsScene作爲本地文件,它是全局文件。您可以使用Core.class(Sprite)創建的表。在Lua中,函數沒有聲明。它們是在運行時創建的值。當你運行像一個語句:

function CardsScene:basicMathAnswer() 
end 

它創建一個函數值,並在通過表達CardsScene當前計算的值稱爲表分配給basicMathAnswer領域。

因此,請繼續並將任何或所有帶有函數定義和賦值的語句移動到任意數量的文件中。只要確保在全局變量CardsScene之後執行它們。

1

讓自己熟悉Lua模塊和標準功能require

https://www.lua.org/pil/8.1.html https://www.lua.org/manual/5.3/manual.html#pdf-require

可以執行類似功能的Lua文件。

文件A.lua:

print("hello this is from file A") 

文件B.lua:

require("A") 
print("and this is from file B") 

一旦你運行B.lua你會得到下面的輸出:

您好,這是從文件A

這是來回m文件B

一旦你明白髮生了什麼,你可以在多個文件中實現你的表成員。

我建議不要在多個文件中分割一張表。我寧願爲Math和Spelling提供一個單獨的表格,還有第三個將它們結合到一個CardsScene中的表格。不只是2人在同一張桌子上工作。

+0

我對'require'很熟悉,但之前沒有用過它。通常情況下,我會跨班級分開;在我目前的情況下,儘管我在一個場景管理系統中工作,需要花費大量時間和開銷來轉換場景。在這種情況下,切換場景將會是難以忍受的用戶體驗,所以我正在尋找其他的方法來保持我的代碼的組織性和易於維護。 – bigtunacan

+0

@bigtunacan不知道我是否完全理解你想達到的目標。你不必切換你的場景。只有1個接口可以從2個必需的文件中獲取它的實現。 – Piglet

相關問題