2016-06-30 4 views
1

私は(メインAurora64クラスが別の場所で初期化されますが、私は完全を期すためにそれをここに挿入されている)の機能のカップルを含む非常に単純なネストされたテーブルAurora64.Chatを持っている:この関数とその呼び出しに対する私のアプローチが間違っていますか?

Aurora64 = {}; 

Aurora64.Chat = { 
    entityId = 0; 
    Init = function() 
     local entity; --Big long table here. 
     if (g_gameRules.class == "InstantAction") then 
      g_gameRules.game:SetTeam(3, entity.id); --Spectator, aka neutral. 
     end 
     entityId = Entity.id; 
     self:LogToSystem("Created chat entity '" .. entity.name .. "' with ID '" .. entity.id .. "'. It is now available for use."); 
    end 

    LogToSystem = function(msg) 
     System.LogAlways("$1[Aurora 64]$2 " .. msg); 
    end 
} 

上記のコードが失敗した(checked with the Lua Demo)以下で:

入力:14: '}'

'LogToSystem' の近くに(3行目で '{' 閉じるために)予想私はTRを有していますLogToSystemの関数とその使用法を確認しました(関数を削除して使用するとコードが完全にコンパイルされます)、私はuse of concatenation(これはそうではありません)を使用していると考えました。

私は単純なことを忘れていたかもしれないと思っていますが、私はchecked the documentation on functionsとその機能は&です。その呼び出しは正しく書かれているようです。

私は正確にここで間違っていますか?あなたはLogToSystemの前にカンマが含まれていない、あなたは(明示的なパラメータとしてselfを追加することで)少し異なるそれを定義する必要があり

+0

'self:LogToSystem'は' Aurora64.Chat'テーブルの外にあるはずですか? –

+0

あなたはルアのテーブルに慣れていないのですか?まず、 'Init'に' LogToSystem'をインクルードしようとしています。なぜなら、まだ宣言されていないし、チャットテーブル自体の一部として宣言していてグローバルではないからです。次に、 'self:LogToSystem'を宣言しようとしています。おそらく、' self'は 'Chat'自体を参照する一種のキーワードであると考えています。私はあなたが混乱しているのを見ます。それらのメソッドを呼び出す方法を説明し、おそらくあなたを助けることができます。 – user6245072

+0

'entityId'や他の' entity.id'で何をしようとしているのかも不明です。 – user6245072

答えて

1

end, 

    LogToSystem = function(self, msg) 
     System.LogAlways("$1[Aurora 64]$2 " .. msg); 
    end 
} 

それはに割り当てられた匿名関数でフォームobj:methodを使用することはできませんテーブルフィールド。 function obj:method構文でのみ使用できます。

+0

ありがとう、私はそれが(それは2年以上Luaから中断を取ったと私はそれ以来、いくつかのことを学んだので、私はどのように混乱したかを見るのはかなり簡単です)と同じように簡単だと思った。 – cybermonkey

+0

@cybermonkeyもしそれが正しいとすれば、いくつかの間違いがあります。 'Init'では' entityId'と 'self:LogToSystem'を参照しています。どちらもそのまま使えません。 'entityId'を' Aurora64.Chat.entityId'に置き換え、 'self:LogToSystem'を使うために' Init'関数は最初の引数として 'self'を含まなければならず、コロン演算子を使って呼び出さなければなりません。 – user6245072

関連する問題