2011-06-22 19 views
10
luaL_loadstring(L, "return 3, 4, 5"); 
int R  = lua_pcall(L, 0, 3, 0); 

लुआ कई मान वापस कर सकता है। लेकिन वर्तमान में मुझे वापसी मूल्यों की गिनती को कठोर करना है। क्या मैं गतिशील रूप से रनटाइम पर गिनती जान सकता हूं?मैं सी से लुआ फ़ंक्शन की वापसी मूल्य गणना कैसे जान सकता हूं?

उत्तर

15

हां।

int top = lua_gettop(L); 
luaL_loadstring(L, "return 3, 4, 5"); 
int R = lua_pcall(L, 0, LUA_MULTRET, 0); 
int nresults = lua_gettop(L) - top; 

आप LUA_MULTRET का उपयोग करें, और उसके बाद lua_gettop का उपयोग करने से पहले और कॉल के बाद ढेर के शीर्ष यह पता लगाने की।

+0

धन्यवाद! मेरे जैसे अन्य लोगों के लिए सिर्फ एक टिप्पणी जिन्होंने विवरण खोने की गलती की है: उपरोक्त (सही) नमूना स्टैक पर फ़ंक्शन को धक्का देने के लिए 'luaL_loadstring' * का उपयोग करता है *, यदि फ़ंक्शन पहले से मौजूद है (जैसा कि यह मेरे मामले में था) nresults के लिए एक +1 की आवश्यकता होगी, या आप परिणामों की गलत संख्या के साथ खत्म हो जाएगा (जैसा कि मेरे मामले में ...)। – Rick77