Codeaで継承を使用することは可能ですか?私はLuaにかなり慣れていませんが、いくつかの簡単なグーグルから、継承とポリモーフィズムを行う方法は少し「関与」しているように見えます。CodeaのLuaホスティングエンジンで安全に使用できるテクニックはありますか?
これが私が動かそうとしている簡単な実行可能なテストです。私のスーパークラス:
Superklass = class()
function Superklass:init(x,y)
self.x = x
self.y = y
end
function Superklass:debug()
print(string.format("(%d, %d)", self.x, self.y))
end
サブクラス:
Ship = class()
function Ship:init(x, y)
-- you can accept and set parameters here
print('ship:init() called')
self = Superklass(x,y) -- ???
print('attempting to call self:debug()')
self:debug() -- works! prints
print('ok!')
end
function Ship:draw()
print('ship:draw() called')
print('attempting to call self:debug()')
self:debug()
print('ok')
end
そして、プログラムのエントリポイント:
-- initial setup
function setup()
ship = Ship(HEIGHT/2, WIDTH/2)
end
-- called once every frame
function draw()
ship:draw()
end
これを実行した結果は次のとおりです。
ship:init() called
attempting to call self:debug()
(384, 375)
ok!
ship:draw() called
attempting to call self:debug()
error: [string "Ship = class()..."]:16: attempt to call method 'debug' (a nil value)
Pausing playback
これは信じられないほど素朴だと確信していますが、Codeaのコンテキストで機能する可能性のある何かの方向へのヒントが欲しいです。