2010-12-09 19 views
9

Statik sınıf işlevini lua'ya bağlamak istiyorum. Bildiğiniz gibi, statik sınıf fonksiyonu, sınıf fonksiyonunda bir farktır. Yani lua işlev çağrısı kod böyle olmalı ...lua'da ad alanı nasıl oluşturulur?


//C++ 
lua_tinker::def(L, "Foo_Func", &Foo::Func); 

//Lua 
Foo_Func() 

Ama ben böyle kullanmak için herhangi bir yolu var mı bu


//Lua 
Foo.Func() 

gibi lua işlevi çağırmak istiyorum? Lua tablosu yardımcı olabilir. Ama hiçbir referans bulamıyorum.

cevap

9

Evet, bu bir tablo ile yapılacaktır ve aslında çoğu modül require ile içe aktarırken çalışırken çalışır.

Foo = {} -- make a table called 'Foo' 
Foo.Func = function() -- create a 'Func' function in stored in the table 
    print 'foo' -- do something 
end 
Foo.Func() -- call the function 
+1

sen beyan eğer unutmayın Foo: bu geçecek Foo: Func() ('' dikkat edin) İlk fonksiyon parametresi olarak tablo. – Goles

4

En ilginç olanını PiL chapter 26.2 bulursunuz. Kitaplığınızı tabloyla aynı adla derlerseniz (yani dosya adı ==modulename), yalnızca() modülünü isteyebilirsiniz. Foo.Func = function (bu) ... uç arayabilirsin: