Ликбез по Lua

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
John Doe
Бюрократ
Posts: 12829
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Ликбез по Lua

Post by John Doe »

В данной теме задаём вопросы по Lua.

Для того, чтобы получить начальное представление о языке достаточно почитать какую-нибудь короткую обзорную статью, например:
Для более близкого знакомства рекомендую эти документы:

Shmuel
Posts: 6139
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 317 times

Ликбез по Lua

Post by Shmuel »

Latest post of the previous page:

Вызывайте Far.DisableHistory(0x1) в начале функции action.

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

Shmuel,
мое мнение. то что вы предлагаете так у него совсем таким образом не будет записи в историю, что ни разу не круто.
Какие есть альтернартивы, быть может апдэйтить базу данный истории?

PS
ну с другой стороны, если ему эта команда совсем не нужна в истории, то ваше предложение будет вполне Ок..
Но я как-то хотел делать подобное с сохранением истории, и не нашел других путей кроме через SQLite
может у вас есть идея куда направиться в реализации?
Last edited by citRiks on Sun 29 Mar, 2020 12:52, edited 1 time in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

Shmuel
Posts: 6139
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 317 times

Ликбез по Lua

Post by Shmuel »

citRiks, судя по оригинальному сообщению, автор не знал о функции DisableHistory. Он спросил как не загромождать историю команд. Я ответил. Целью ответа была помощь, а не демонстрация крутизны.

User avatar
John Doe
Бюрократ
Posts: 12829
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

Ликбез по Lua

Post by John Doe »

citRiks wrote:
Sun 29 Mar, 2020 12:47
и не нашел других путей кроме через SQLite
Других нет
https://t.me/FarManager — Telegram чат

User avatar
raven428
Posts: 50
Joined: Sat 28 Mar, 2009 11:17
Has thanked: 9 times
Been thanked: 1 time

Ликбез по Lua

Post by raven428 »

Shmuel wrote:
Sun 29 Mar, 2020 12:16
Вызывайте Far.DisableHistory(0x1) в начале функции action.
Спасибо, помогает. Однако, всё же хочется, чтобы команда без префикса и суффикса всё же попадала в историю. Существует ли функция для этого?
too much raVen over paradise...

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

Вопрос насчет прозиводительности, какой кусок кода эффективнее:

Code: Select all

for i = 0, big_num do
	local high_num	= some_array_1[i+i]
	local low_num	= some_array_1[i+i+1]
	---
end
или:

Code: Select all

local high_num, low_num
for i = 0, big_num do
	high_num	= some_array_1[i+i]
	low_num	= some_array_1[i+i+1]
	---
end
.. ?
Разница в том где сделана декларацию интежеров
И тот же вопрос насчет строк, если поведение отличается
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

User avatar
HaRT
Moderator
Posts: 9446
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 106 times
Been thanked: 223 times

Ликбез по Lua

Post by HaRT »

citRiks wrote:
Sun 05 Apr, 2020 15:25
какой кусок кода эффективнее
А что мешает вам самому сделать замеры и опубликовать результаты? Тут, чай, не C/C++, с настройками оптимизатора играть не предполагается.
Фар есть инструмент, а не нянька. © 2009 DrKnS

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

HaRT,
А что мешает вам самому сделать замеры и опубликовать результаты?
ну хорошо все оформить это берет время, да и зачем если кто-то уже знает, кто-то делал уже.
Думал может есть какие-то best practices

ну я то померил, достаточно "на глазок".
получилось что если и длиннее с внутренними декларациями, то несущественно,
что немного странно немного странно, ну OK
со строками не проверял
но логики больше в декларации снаружи делать
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

Smitis
Posts: 1623
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

Ликбез по Lua

Post by Smitis »

citRiks wrote:
Sun 05 Apr, 2020 17:49
получилось что если и длиннее с внутренними декларациями, то несущественно,
что немного странно немного странно, ну OK
А чего странного? Вы лишь определяете область видимости переменных. Логика подсказывает, что память под переменные будет выделяться один раз, а не при каждой итерации.
Разум когда-нибудь победит.

buniak_a_h
Posts: 1883
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 120 times
Been thanked: 170 times
Contact:

Ликбез по Lua

Post by buniak_a_h »

Smitis wrote:
Sat 11 Apr, 2020 16:29
А чего странного? Вы лишь определяете область видимости переменных. Логика подсказывает, что память под переменные будет выделяться один раз, а не при каждой итерации.
Ну и ну!
Переменная размещается, естественно, при каждом входе в блок (при объявлении переменной). Таким образом, например, можно организовать стек:

Code: Select all

local ii=10
do
 local ii=ii+5
 far.Show(ii) -- 15
end
far.Show(ii) -- опять 10
Т.е. память переменной ii была выделена в 1-й строке, затем в 3-й (при инициализации использовалось значение первой ii), а при выходе из блока (в строке 5) вторая ii будет помечена как свободная (сборщик мусора её освободит окончательно). Так что логика Вам не то что-то нашёптывает.
Просто размещение переменной типа number - дело ну очень "лёгкое" (что там - выделить из кучи очередные 64 байта и подправить словарь). Вот строки, или таблицы, или userdata - там может и побольше ресурсов требовать.

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

Shmuel wrote:
Thu 29 Dec, 2016 11:54
IgorZ wrote: А вот с __len, __ipairs, __pairs что-то, кажется, не так.
Перечисленные метаметоды не работают для таблиц в Lua 5.1, в чём легко убедиться из мануала. Последние два вообще отсутствуют в Lua 5.1.
Если скомпилировать LuaJIT с ключом -DLUAJIT_ENABLE_LUA52COMPAT, тогда эти метаметоды должны работать.
А ФАР-овский LuaJit с этим ключем скомпайлен, или как?
Если нет, то где взять с этим ключем?
Можно ли самому перекомпилировать и заработает ли тогда в связке с ФАРом?
Last edited by citRiks on Mon 15 Jun, 2020 18:34, edited 1 time in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

User avatar
zg
zero-gravity
Posts: 5833
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 151 times
Contact:

Ликбез по Lua

Post by zg »

citRiks wrote:
Mon 15 Jun, 2020 18:31
А ФАР-овский LuaJit с этим ключем скомпайлен, или как?
без.
citRiks wrote:
Mon 15 Jun, 2020 18:31
Можно ли самому перекомпилировать и заработает ли тогда в связке с ФАРом?
можно. заработает.

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

zg,
Можно ли узнать, почему бы тогда не делать этот ключ искаропки?
C этим флагом преимущества вроде понятны, а недостатки какие?
Т.е., может быть этим ломается совместимость кода с 5.1, как например (?)
Или в чем подвох?
zg wrote:
Mon 15 Jun, 2020 18:42
можно. заработает.
Тот LuaJit который есть в ФАРе, он откуда взят?
Т.е., можно ли например, взять откуда-нибудь стандартный-обычный LuaJit (той же версии конечно), то ФАР ничего не заметит?
Или его нужно комплилять как-то по особому?
Last edited by citRiks on Mon 15 Jun, 2020 19:22, edited 3 times in total.
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

Shmuel
Posts: 6139
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 317 times

Ликбез по Lua

Post by Shmuel »

citRiks wrote:
Mon 15 Jun, 2020 19:12
Можно ли узнать, почему бы тогда не делать этот ключ искаропки?
LuaJIT по умолчанию тоже без этого ключа, а мог бы по умолчанию быть с ним, а кому не надо, чтобы добавлял ключ -DLUAJIT_DISABLE_LUA52COMPAT.
citRiks wrote:
Mon 15 Jun, 2020 19:12
Тот LuaJit который есть в ФАРе, он откуда взят?
Я собираю время от времени.
citRiks wrote:
Mon 15 Jun, 2020 19:12
Т.е., можно ли например, взять откуда-нибудь стандартный-обычный LuaJit (той же версии конечно), то ФАР ничего не заметит?
Не существует "стандартного-обычного". LuaJIT публикуется только в исходниках.

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

Shmuel wrote:
Mon 15 Jun, 2020 19:33
Я собираю время от времени.
А может соберете в следующий раз с этим думаю что полезным для всех флагом?
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

citRiks
Posts: 674
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 198 times
Been thanked: 44 times

Ликбез по Lua

Post by citRiks »

Shmuel wrote:
Mon 15 Jun, 2020 19:33
Не существует "стандартного-обычного". LuaJIT публикуется только в исходниках.
Я собрал его как-то, ничего не меняя, исходники из официального сайта,
на мой взгляд - кто так делает, тот и получает обычный стандартный LuaJit
Ну насколько я понял, это нормальная замена тому что собирали вы, скажем?
А кто не поверит в наше миролюбие,
Тот кровью умоется.
И будет такая борьба за мир,
Что камня на камне не останется.

Post Reply

Return to “Нужна помощь”