C++ 'da, bilinmeyen sayıda giriş içeren bir map<string, string>
sahibiyim. Bunu Lua işlevine nasıl iletebilirim, böylece Lua işlevi verileri bir tablo olarak kullanabilir mi?C++ 'da Lua Tablosunu nasıl oluşturabilirim ve bir Lua işlevine nasıl geçirebilirim?
9
A
cevap
18
için beklenir: ikame haritanızda için doğru türleriyle
lua_newtable(L);
int top = lua_gettop(L);
for (std::map::iterator it = mymap.begin(); it != mymap.end(); ++it) {
const char* key = it->first.c_str();
const char* value = it->second.c_str();
lua_pushlstring(L, key, it->first.size());
lua_pushlstring(L, value, it->second.size());
lua_settable(L, top);
}
..
5
Birkaç seçenekleri ...
Kopya yeni Lua tabloya haritası ve Lua tablo geçmektedir.
- okur yönlendirir ve tabii ki, bir MetaTable en
__index
ve__newindex
metamethods
(1) tüm kopyalanmasına dezavantajı aracılığıyla yazar bir proxy table oluşturun.
dezavantajı (2) 'pairs()
vekil tablo
genel pairs
için Lua düzeltmelerin bir tartışma in the wiki ve this mailing list thread olduğu çalışmaz olmasıdır. gerçek lua tablo istiyorsanız Genelleştirilmiş pairs
Lua 5.2
İlgili konular
- 1. Lua tablosunu nasıl sonlandırılır?
- 2. Lua
- 3. Başka bir Lua dosyasından yüklerken parametreleri bir Lua dosyasına nasıl geçirebilirim?
- 4. Lua'nın Lua hash tablosunu kullanmak mümkün mü?
- 5. Lua
- 6. Lua
- 7. Ayar C özelliklerinden Lua
- 8. Lua'nın baskısı nasıl çalışır ve Lua/Torch
- 9. C++ içine yerleştirme Lua
- 10. Lua, virgülle
- 11. lua durum kümemi nasıl temizlerim?
- 12. Lua alıcıları ve ayarlayıcıları
- 13. Selen'de bir enum'u Lua
- 14. Lua - initialize
- 15. Lua - JSON
- 16. Lua Python'un içine nasıl yerleştirilir?
- 17. Lua 5.2 işlevinin çağrılması C++
- 18. Bir c işlevinden lua işlevini geri çağırmak
- 19. nasıl eşdeğer anlamaya çalışıyorum Lua
- 20. Lua dilinde dosyalar nasıl oluşturulur?
- 21. Nasıl .lua komut dosyasını çalıştırabilirim?
- 22. Lua tarafından bir C++ DLL yüklenebilir oluşturma
- 23. Bir lua tablosu girişini anahtarıyla nasıl kaldırabilirsiniz?
- 24. Lua - Herhangi bir geri dönüşü nasıl alabilirim?
- 25. Bir c işlevi çağrıldığında lua komutunu alın
- 26. Sınırlı C/C++ yığını olan Lua oturumu
- 27. Nasıl bir Lua dizesi float dönüştürmek için
- 28. Bir Lua işlevi mi saklıyorsunuz?
- 29. lua eşdeğeri __LINE__ ve __FILE__?
- 30. Lua C++ bağlamaları arasındaki olası çakışmalar
bir yineleyici eklemek çok zor olmamalı Tablolar için çiftler() gibi kullanılabilecek metatabla işlevi. –
genellikle 2 seçeneğini yapar; Tablo küçük değilse ve çoğunlukla salt okunur bir masaya çok sayıda istek var. – Javier