2011-12-22 7 views
5

皆無であり、私はそれを行うための簡単な方法を持っていたと思ったが、それは動作していないと私はちょうどよ理由を見ていない。ここで私がしようとしているものです:FYILuaの引数は、私はOOPはLuaの中でどのように行われるかのハンドルを取得しようとしている

Person = { }; 
function Person:newPerson(inName) 
    print(inName); 
    p = { }; 
    p.myName = inName; 
    function p:sayHello() 
    print ("Hello, my name is " .. self.myName); 
    end 
    return p; 
end 

Frank = Person.newPerson("Frank"); 
Frank:sayHello(); 

、私は(私は信じているから印刷()は出番それはだ除いて)それは違いはありませんと仮定しておりますが、私は、コロナSDKで働いています。いずれにしても、私を殺している部分は、inNameがprint(inName)によって報告されたようにnilであるということです。したがって、myNameは明らかにnilに設定されているのでsayHello()の呼び出しは失敗します。 myNameは、私が試している基本的な構造が健全だと思うように導くが、単純なものを逃してしまう)。 newPerson()が呼び出されたとき、私は私の人生は、なぜ理解できないためinNameの値が設定されていないようですが、私の知る限り、見えます。なぜ他の関数呼び出しと同じではないのか分かりません。

ご協力いただければ幸いです。ありがとう!

答えて

7

このことを覚えておいてください

Frank = Person:newPerson("Frank"); 
+0

私はあなたとニコールの答えを正しく受け入れることができればいいと思っています。あなたはどちらも正解しています...あなたが最初に答えたからです。:)しかし、私が期待していたように、私が忘れてしまったばかげた何か、私が知らなかったものさえなかった。もう一度、ありがとう、すべての作業をする必要があり、私は今したい:) –

+4

@ Schollii:答えをstackoverflowフォーラムで説明してください。 – karthik

+0

@karthik:そうだね、思い出してくれてありがとう! – Schollii

9

をお試しください:

function Person:newPerson(inName) 

がこれに相当します

したがって
function Person.newPerson(self, inName) 

、あなたがこれを行うとき:

Person.newPerson("Frank"); 
を3210

あなたはを期待する関数に一つのパラメータを渡しています。あなたはおそらくnewPerson:で作成したくないでしょう。

関連する問題