Как вызвать у таблицы - "строковую переменную" ?

Страницы: 1
RSS
Как вызвать у таблицы - "строковую переменную" ?
 
Чтобы вызвать метод у таблицы, к примеру метод Size() у таблицы CreateDataSource - нужно сделать так:
Код
       //index - номер таблицы в стеке Lua

    lua_getfield(L, index, "Size");            //"Извлекаем" из "таблицы" функцию отвечающую за возвращения размера этой таблицы.
    lua_pushvalue(L, index);                //Помещаем копию обьекта таблицы на вершину стека.

    int status_lua_pcall = lua_pcall(L, 1, 1, 0);      //Вызываем функцию Size 

А как сделать тоже самое, но не с методом таблицы, а со строковым полем ? К примеру, как в getQuoteLevel2: [url]https://luaq.ru/getQuoteLevel2.html[/url]

У таблицы есть поле bid_count/bid_count, но такой же код не прокатывает:
Код
    lua_getfield(L, index, "bid_count");            //"Извлекаем" из "таблицы" функцию отвечающую за возвращения размера этой таблицы.
    lua_pushvalue(L, index);                //Помещаем копию обьекта таблицы на вершину стека.

    int status_lua_pcall = lua_pcall(L, 1, 1, 0);      //Вызываем функцию Size 

Ошибка: attempt to call a string value
 
Quikos,
Скажите, что я ошибаюсь,
но у меня складывается впечатление,
что Вы кроме форума больше ничего не изучали по программированию на Си и Lua.
Я прав?
 
 
Цитата
nikolz написал:
Quikos ,
Скажите, что я ошибаюсь,
но у меня складывается впечатление,
что Вы кроме форума больше ничего не изучали по программированию на Си и Lua.
Я прав?
Про Lua - да, Вы правы.
 
Но, если есть возможность подсказать по данному вопросу, то был бы рад почитать ответ :)
 
Quikos, Не понимаю, что Вы, собственно, хотите. to call a string value? Для программирования данными я лично использую функцию load, и только для того, чтобы держать некоторые куски кода во внешних файлах. Вызывать строку как функцию здесь, кажется, не пробовал, но в JS частенько этим пользовался, иногда даже сооружая код этой функции (в смысле, строки) на лету. Скорее всего, это должно работать и в Lua.
 
Цитата
Владимир написал:
Quikos, Не понимаю, что Вы, собственно, хотите. to call a string value? Для программирования данными я лично использую функцию load, и только для того, чтобы держать некоторые куски кода во внешних файлах. Вызывать строку как функцию здесь, кажется, не пробовал, но в JS частенько этим пользовался, иногда даже сооружая код этой функции (в смысле, строки) на лету. Скорее всего, это должно работать и в Lua.
Я хочу вызвать строковое поле у таблицы:
Код
my_table_DataSource, error_desc_2 = CreateDataSource("TQBR", "SBER",  INTERVAL_M5)  

message("Table_Size:" .. tostring(my_table_DataSource.Size()))

Код
table_stock = getQuoteLevel2("TQBR", "SBER")

message("bid_count:" .. table_stock.bid_count)


В первом сдучае я вызываю метод Size() у таблицы CreateDataSource - только делаю в Lua C API - как показал в самом первом сообщении - и это работает.

Теперь мне нужно сделать "то же самое" - но только вызвать не метод у таблицы, а стркоове поле у таблицы возвращенной функцией getQuoteLevel2 - сделать нужно всев том же Lua C API - и вот аналогичный метод с вызовом метода Size() - уже не работает, видимо строковое поле таблицы нужно, как то по другому доставать из таблицы.

Вот я и пытаюсь понять как.
 
Quikos, Я не знаю, что там за поле CreateDataSource - этим говном я никогда не пользовался и другим не советую. И пишу только на чистом луа - никаких API. Если Вам нужно вызвать строку - насрать, в какой таблице или переменной она лежит или является возвращаемым значением - попробуйте через load.
 
Цитата
Владимир написал:
Quikos, Я не знаю, что там за поле CreateDataSource - этим говном я никогда не пользовался и другим не советую. И пишу только на чистом луа - никаких API. Если Вам нужно вызвать строку - насрать, в какой таблице или переменной она лежит или является возвращаемым значением - попробуйте через load.
Что за load ?
 
Quikos, Функция здешняя. Насколько я помню, недокументированная.
for l in F:lines() do
s=l:sub(1,1);
if s=="_" then load(l:sub(2))();end;
end;
Т.е. если строка в файле начинается с символа подчёркивания, скрипт выполняет её как если бы она была набита прямо в коде. Этим способом я сообщаю скрипту номер счёта, код клиента, количество денег, который ему разрешено использовать и т.д.
 
Цитата
Владимир написал:
Quikos, Функция здешняя. Насколько я помню, недокументированная.
for l in F:lines() do
s=l:sub(1,1);
if s=="_" then load(l:sub(2))();end;
end;
Т.е. если строка в файле начинается с символа подчёркивания, скрипт выполняет её как если бы она была набита прямо в коде. Этим способом я сообщаю скрипту номер счёта, код клиента, количество денег, который ему разрешено использовать и т.д.
1)Так это не Lua C api.

2)Использовать недокументированные функции - чтобы получить недокументированный результат ? Это странно.
 
Quikos,
1) Это чистейший Lua. :smile:

2) А что делать прикажете? Язык - полное говно, и это единственная возможность программирования данными. В одном из самых первых своих постов я писал:
УХ ТЫ! А в описании языка (руководство пользователя) нет ни звука ни про unpack, ни про loadstring! А эти вещи, как я предполагаю, должны бы расширять функциональные возможности совершенно диким образом!
 
Цитата
Владимир написал:
Quikos,
1) Это чистейший Lua. ::
Мне нужен Lua с примесью Си - именно об этом я спрашивал.
Страницы: 1
Читают тему
Наверх