Привет и заранее спасибо. Я пытаюсь понять, есть ли способ избежать изучения C (которого я вообще не знаю), чтобы превратить пользовательские данные в таблицу Lua.
Я использую приложение, которое позволяет пользователям писать надстройки с использованием сценариев Lua. Эти надстройки могут запрашивать базовые данные приложения. Однако результаты запроса возвращаются как пользовательские данные, и мне нужно, чтобы они были доступны в скрипте.
Мне не удалось найти в документации приложений ничего о работе с возвращенными наборами данных. Единственное описание, которое , заключается в том, что выполняемая мной операция:
Выполняет назначенную в данный момент строку запроса и использует результаты для создания либо объекта DataSet, если возвращено несколько наборов результатов, либо DataTable, если возвращен один набор результатов или нет.
В моем случае я получу несколько наборов результатов, я называю это пользовательскими данными, потому что это то, что я получаю, когда вызываю type()
в результате запроса.
Я просмотрел документацию Lua, которая кажется полезной, но в ней отсутствуют знакомство с C Я понятия не имею, на что я смотрю. Метатаблица сообщает мне, что у меня есть доступ к метаметодам __index
, __newindex
, __tostring
и __gc
. Вызов tostring
дает мне семизначное целое число, которое (я думаю) совершенно не связано с моими данными. Возможно, я даже не получаю обратно те данные, которые мне нужны, но я не могу придумать способ это проверить. Интернет-ресурсы либо говорят, что это невозможно сделать, либо предоставляют решения на C, которые, вероятно, умные, чистые и потрясающие, но я их не понимаю.
Поэтому я ищу более подробное руководство о том, могу ли я это сделать, если есть способ сделать это без C (или просто слепо скопировав чужой код), или - если мне нужно использовать C для этого - если мы говорим о 90-минутном или 7-часовом курсе Lynda Introduction to C, чтобы добраться туда, где мне нужно быть?
(и извиняюсь, если этим вопросом я случайно нарушил какие-либо нормы сообщества ... это мой первый пост)
c
, поскольку этот вопрос, по-видимому, касается того, как интерпретировать общий объект Luauserdata
в сценарии Lua, который не имеет ничего общего с C. - person Mark Benningfield   schedule 05.01.2018userdata
, тогда в документации для скриптовой части приложения следует указать, какие методы определены для использования с этим объектом. - person Mark Benningfield   schedule 05.01.2018__newindex
, пустую таблицу с именемcache
, что-то с ключом типаuserdata
и значением1
, функцию__tostring
, функцию__index
и функцию__gc
. Думаю, пришло время сказать своему боссу, что я не смогу выполнить эту работу, но я ценю время каждого. - person Liam   schedule 08.01.2018__newindex
вызывается, когда вы назначаетеv[k]
, а__index
вызывается, когда вы извлекаетеv[k]
(v
- значение, аk
- ключ). К сожалению, фактическая функция, вероятно, будет реализована внутри, поэтому вы можете только догадываться об именах методов. Конечно, вы можете найти имена, если использовали некоторые инструменты отладки, но сам Lua не обеспечивает отражения для внешних объектов (поскольку его не может быть). Функция__index
зависит от того, даст ли она вам функцию или нет, но ее наличие - это хорошо, это означает, что есть что-то, что можно использовать. - person IS4   schedule 08.01.2018