Форум программистов, компьютерный форум, киберфорум
Наши страницы

Lua

Войти
Регистрация
Восстановить пароль
 
syberuser
0 / 0 / 2
Регистрация: 06.12.2012
Сообщений: 30
#1

Правильный вызов функции из таблицы - Lua

14.07.2016, 11:27. Просмотров 921. Ответов 0
Метки нет (Все метки)

Добрый день, может немного не в тему, но по-моему вопрос ближе к языку программирования
преамбула
Есть программа imapfilter. Служит для сортировки почты. Сортировка описывается на LUA. Есть готовые функции для сортировки по критериям, я же хочу описать иную логику.
Не вдаваясь в подробности imapfilter, командой results=myacc.INBOX:select_all(), получаю таблицу results, следующего содержания:
Код
for key, value in pairs(results) do
     print (key, value)
end

2 messages, 0 recent, 2 unseen, in ххх@imap.mail.ru/INBOX.   -- это выхлоп imapfilter. говорит что у меня есть 2 письма во входящих. далее - содержимое таблицы results

1	table: 0x1f72b60
2	table: 0x1f79e40
is_smaller	function: 0x1f32bb0
remove_flags	function: 0x1f2bad0
match_message	function: 0x1f4bde0
is_undraft	function: 0x1f48f00
_intersection	function: 0x1f52f90
is_older	function: 0x1f41130
_type	set
match_header	function: 0x1f4b790
contain_header	function: 0x1f48050
match_bcc	function: 0x1f49500
contain_from	function: 0x1f46080
is_unflagged	function: 0x1f3ef10
add_flags	function: 0x1f415b0
_union	function: 0x1f2b820
mark_draft	function: 0x1f35c10
contain_subject	function: 0x1f470d0
sent_on	function: 0x1f43c00
arrived_before	function: 0x1f41a90
mark_flagged	function: 0x1f35b80
contain_to	function: 0x1f47840
unmark_answered	function: 0x1f48d20
contain_field	function: 0x1f45e30
copy_messages	function: 0x1f45be0
unmark_seen	function: 0x1f4a250
send_query	function: 0x1f37580
sent_since	function: 0x1f44330
match_from	function: 0x1f4a6a0
match_field	function: 0x1f4ae80
arrived_on	function: 0x1f40c80
sent_before	function: 0x1f43b70
is_draft	function: 0x1f4d600
_difference	function: 0x1f3e670
is_flagged	function: 0x1f4c180
is_newer	function: 0x1f411c0
match_subject	function: 0x1f4a610
mark_deleted	function: 0x1f38520
_mt	table: 0x1f79610
has_flag	function: 0x1f45ec0
is_larger	function: 0x1f3f340
contain_message	function: 0x1f4a490
is_unanswered	function: 0x1f3cd60
contain_bcc	function: 0x1f46890
mark_answered	function: 0x1f38490
select_all	function: 0x1f2b570
contain_body	function: 0x1f48c30
replace_flags	function: 0x1f38280
_new	function: 0x1f3c150
is_recent	function: 0x1f49c20
unmark_deleted	function: 0x1f2e920
is_unseen	function: 0x1f34ba0
is_undeleted	function: 0x1f48e70
arrived_since	function: 0x1f432a0
mark_seen	function: 0x1f41250
contain_cc	function: 0x1f46800
is_answered	function: 0x1f4d690
match_to	function: 0x1f4ad50
match_body	function: 0x1f4b700
match_cc	function: 0x1f49e40
unmark_flagged	function: 0x1f4a1c0
delete_messages	function: 0x1f458e0
unmark_draft	function: 0x1f48af0
is_new	function: 0x1f4c410
is_seen	function: 0x1f49220
is_old	function: 0x1f425d0
is_deleted	function: 0x1f4c380
move_messages	function: 0x1f45c70
где первые 2 строки - это представление 2-х писем в ящике, остальное, как я понимаю - функции для их обработки.
Дальше предполагается отбор из таблицы results по вхождению в теме, отправителе и тд. и затем непосредственное действие, перемещение, копирование, удаление и тд
Действие вызвается следующим образом:
Код
results:move_messages(account_name.test)
этот код переместит все письма, в данном случае 2, в папку test

теперь суть вопроса:
пусть писем будет 6, и мне надо перенести первые 2
насколько я понял конструкция results:move_messages(account_name.test) вызывает функцию move_messages(results), т.е. от всех записей в таблице (или элементов массива, как здесь будет правильнее?) имеющих числовой индекс (1,2,3...6)
можно ли передать параметром не всю таблицу results а ее, допустим, первый элемент results[1]?
я это вижу как-то вроде results.move_messages(results[1], account_name.test) но оно так не работает, пишет table index is nil. и мне кажется, что это потому, что я не правильно понимаю построение вызова функции (т.е. путаюсь в синтаксисе) ведь как-то оба параметра (и значения таблицы и папка назначения) передаются функции.

научите, пожалуйста, как построить вызов правильно

Добавлено через 28 минут
вопрос снят, видимо нужно больше спать

конструкция results.move_messages(results[1], account_name.test) правильная, а ошибка полностью выглядела так:
Код
imapfilter: /usr/share/imapfilter/common.lua:41: table index is nil
в свою очередь в файле common.lua есть функция, извлекающая элементы из таблицы
Код
function _extract_mailboxes(messages)
    local t = {}
    for _, v in ipairs(messages) do
        b, _ = table.unpack(v)
        t[b] = true
    end
    return t
end
и когда я их заранее извлек указав первый элемент таблицы results[1] - извлекать стало уже некого

обошел временной таблицей r1={results[1]}
results.move_messages(r1, account_name.test)

все работает.
всем спасибо ...................... =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2016, 11:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильный вызов функции из таблицы (Lua):

Вызов lua функции в C++ - Lua
Здрасте! Как вызвать функцию, написанную в луа скрипте? (lua 5.2) Всё уже облазил, а ответ никак не найду :-| То говорят о другом, то...

Вызов функции из значения поля таблицы БД - Visual Basic
Добрый день. Нужна помощь экспертов. У меня в модуле (V_KONH_VKS) есть две функции: FM_ITOGPRICE_NDS которая рассчитывает...

Вызов функции при клике на ячейку таблицы - JavaScript
Есть таблица. Требуется каждой ячейке (td) установить вызов одной функции, но с разными параметрами (номер строки и столбца ячейки). Есть...

Правильный асинхронный вызов - Программирование Android
Здравствуйте. Есть json файл, который нужно асинхронно парсить при вызове первого Activity. Я сделал так, но это вряд ли правильно: ...

Правильный вызов потока - Delphi
Доброго времени суток. Ребята подскажите! Создал поток. Вроде все должно работать. Но вот когда вызываю его то нечего не происходит (не...

Правильный цикл для вывод данных из таблицы - PHP БД
Добрый день, написал код для вывода данных из бд, но засомневался нужен ли тут do $resultat = mysql_query("SELECT * FROM...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2016, 11:27
Привет! Вот еще темы с ответами:

Как организовать правильный выбор данных из таблицы? - C# MVC
Здравствуйте господа программисты :-) Имеется сложность с выбором данных из таблицы. Есть представление @model...

Как написать правильный запрос для большой таблицы - Firebird/InterBase
есть 2 таблицы: 1) itemid, name 2) statusid, itemid, date, somevalue нужно выбрать из второй таблицы последние значения...

Правильный вывод функции - C++
Всем привет! Я только недавно начал учить C++ Вот программа: #include <cstdio> #include <cstdlib> #include <iostream> #include...

Не всегда правильный результат функции - JavaScript
Почему-то все числа кроме 4 и 2 определяет правильно Два целых числа a и b называются взаимно простыми, если их наибольший общий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru