Войти
ПрограммированиеФорумИгровая логика и ИИ

lua - узнать откуда запущена функция

#0
18:30, 14 сен. 2010

Здравствуйте
каким образом можно узнать имя чанка, из которого запущена функция?
функция require, я добавляю загрузчик, нужно узнать из загрузчика


#1
19:10, 14 сен. 2010

Тебе нужно узнать чанк, в котором она определна или из которого ее вызывают?
В первом случае - нельзя, потому как функции - это first-class value, которые работают по тем же правилам, что и другие значения; во втором - есть debug.traceback.

#2
16:59, 15 сен. 2010

спасибо, wraith, но мне же надо из плюсов(забыл сказать((). буду пробовать lua_getstack

вот еще вопрос:
~:есть строка, например 'print("message")'
    если сделать fn = loadstring('print("message")'), то fn станет функцией, выводящей на экран message

это хорошо, но мне нужно получить функцию с параметрами. можно конечно сгенерировать полную строку, типа
'function fns(code)'..'print(code)'..'end'
и сделать loadstring. Но это слишком влоб и хотелось бы как в ~. чувствую, можно, а как - не понимаю

кстати, эксперимент с замыканиями ничего не дал.

заранее спасибо за ответы

#3
0:00, 16 сен. 2010

Вот так сработает:

loadstring( "return function (arg) print(arg) end;" ) () ("message");

#4
19:03, 16 сен. 2010

спасибо, помогло)

ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.