6

私はLuaを学んでおり:、メソッドにはコロン()を使用したいと思います。残念ながら、どこでも機能しているわけではありません。私のコードを参照してください:

Set = {}
ローカルmt={}
関数Set:new(m)
    ローカルセット={}
    setmetatable(set、mt)
    ペアのa、bの場合(m)
        set [b] = true
    終わり
    リターンセット
終わり

関数Set.union(a、b)
    ローカルres=Set:new({})
    ペアのkの場合(a)do res [k] = true end
    ペアのkの場合(b)do res [k] = true end
    解像度を返す
終わり
mt .__ add = Set.union-なぜSet:union()がここで機能しないのですか?

s1 = Set:new {22,55,77}
s2 = Set:new {2,5,3}
s3 = s1 + s2

上記の場所でどのように使用できますSet:union()か、またはここで使用することはできませんか?

4

1 に答える 1

15

コロンは、関数を定義および呼び出すためだけの構文糖衣であるためです。あなたがおそらく読んだように、とobj:f()同等でobj.f(obj)あり、function A:f()と同等function A.f(self)です。コロンが使用されるのはこれだけです。

あなたの例Set:unionでは、上記の2つの使用法のいずれにも該当しません。これ以上のことはありませんが、お気軽にお問い合わせください:)

于 2010-09-23T15:50:29.967 に答える