2016-05-15 6 views
1
function1 
    weaponsList.earth = {weapon_type='regular',fireTime=0, fireRate=0.7, speed = 250, img = nil} 
end 

サブメンバーにアクセスするには、このようなことをすることができますか?代わりに、これはと呼ばれているが、私はCまたはC++でこれを見てきたもの。このルアのテーブルへのプレフィックスを削除する

weaponsList.earth.fireTime = 2 
    weaponsList.earth.fireRate = 2 
    weaponsList.earth.speed = 2 

わからないを行うに持つの

"using weaponsList,earth" 
    fireTime = 2 
    fireRate = 2 
    speed = 2 
    end 

。Luaの中でこれを行う方法はありますし、それは何ですかと呼ばれる?

答えて

7

次の操作は可能ですが、注意してください。 _ENVをテーブルに設定すると、そのスコープ内でテーブルの外側に表示されません。

do local _ENV = weaponsList.earth 
    fireTime = 2 
    fireRate = 2 
    speed = 2 
end 

別の、おそらくより良い方法は単純です:それはする必要はありませんので、複数の操作を行う前にローカル変数にネストされたテーブルの割り当て

do local e = weaponsList.earth 
    e.fireTime = 2 
    e.fireRate = 2 
    e.speed = 2 
end 

は、実際にベースのLua実装の最適化ですそれぞれの使用法で外側の表を逆参照してください。

0

テーブルをより小さな変数に単純化することができます。

t = weaponsList.earth 

は今t.firerateはweaponsList.earth.firerateと同じです。 tの値を調整すると元のテーブルも更新されます。

これが役立つかどうかは不明ですが、テーブルのすべての変数をグローバルに保存することもできます。

for k,v in pairs(table) do 
    _G[k] = v 
end 

編集:補正LHFのおかげで

+2

は 't.speed'を変更* *' weaponsList.earth.speed'を変更します。 – lhf

関連する問題