2010-03-31 17 views
32

Czy Lua obsługuje coś w rodzaju C: __LINE__ makro, które zwraca numer aktualnej linii kodu? Wiem Lua posiada specjalną wbudowaną zmienną o nazwie _G, ale nie widzę tam numer wiersza ...bieżący numer linii w Lua

Odpowiedz

45

Od Lua za pomocą debug.getinfo np

local line = debug.getinfo(1).currentline 

Od C stosując lua_getinfo (To będzie zwracać LineNumber wewnątrz kodu lua)

lua_Debug ar; 
    lua_getstack(L, 1, &ar); 
    lua_getinfo(L, "nSl", &ar); 
    int line = ar.currentline 

http://www.lua.org/manual/5.1/manual.html#lua_getinfo

http://www.lua.org/manual/5.1/manual.html#pdf-debug.getinfo

+0

Czy powyższe działa w ten sposób ?: io.write ("Błąd na linii" .. wiersz) – qroberts

+1

Czy to działa na Lua 5.3. Otrzymałem błędy naruszenia dostępu w systemie Windows. Czy działa także w przypadku wykonywania skryptu jako pliku i zmiennej (wywołania dofile i doscript)? – TrustyCoder

+0

@TrustyCoder Miałem ten sam problem. Działa to tylko w implementacji C funkcji lua. To NIE działa po pcall próbuje zobaczyć, co poszło nie tak, mam wyjątki też. (Więc zrobiłem moją funkcję obsługi błędów zawierają tę informację w swoim ciągu błędów). –