2010-05-06 14 views
10

gerçekten C'ler __LINE__ ve __FILE__ gibi ... benzer bir şey sunmak lua yapar ben? (Hangi dosyayı ve mesajın hangi satırı geldiğini bilmek için printf'in izini sürmek için yararlı buluyorum).lua eşdeğeri __LINE__ ve __FILE__?

Teşekkürler!

cevap

12
function __FILE__() return debug.getinfo(2,'S').source end 
function __LINE__() return debug.getinfo(2, 'l').currentline end 

Untested, credit goes here.

+2

Not. Bu isimler genellikle dil uygulayıcılarına aittir. –

2

ben c taraftan hat numarasını almak için böyle bir şey kullanın: her zaman bir dosya adı olmayabilir ancak

int lua_getline(lua_State* L, int level) { 
    lua_Debug ar; 
    lua_getstack(L, level, &ar); 
    lua_getinfo(L, "l", &ar); 
    return ar.currentline; 
} 

"edene" ile lua_getinfo çağrılması lua_Debug yapının kaynak alanını dolduracak IIRC. genellikle çift alt çizgi ile başlayan küresel sembolleri isim kötü bir fikir