Ликбез по Lua

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

Ликбез по Lua

Post by John Doe »

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

Для того, чтобы получить начальное представление о языке достаточно почитать какую-нибудь короткую обзорную статью, например:
Для более близкого знакомства рекомендую эти документы:
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Ликбез по Lua

Post by John Doe »

Latest post of the previous page:

http://www.lua.org/manual/5.1/manual.html#pdf-io.close
Подозреваю где-то в вашем коде переменная file оказывается неинициализирована.
Можно попробовать заменить на io.close(assert(file))
iva
Posts: 128
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva »

Спасибо. Вроде разобрался. В долго-работающем экземпляре Far я когда-то выполнил

Code: Select all

local file = io.output("file")  file:close()
Это и привело к проблеме.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Ликбез по Lua

Post by John Doe »

Есть ли разница между io.stdout и io.output() ?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Ликбез по Lua

Post by Shmuel »

John Doe wrote:Есть ли разница между io.stdout и io.output() ?
При запуске интерпретатора, наверное, разницы нет. Но если исполнить io.output("foo.txt"),
то с этого момента разница будет.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Ликбез по Lua

Post by John Doe »

Code: Select all

local t = {
  a=true,
  a={},
  a="str",
  a=0,
  a=false,
  a=nil,
}
far.Show(t.a)
Мануал не регламентирует поведение в этом случае.

Интуитивно кажется, что результат должен равняться последней строке определения таблицы, т.е. 0.
Или первой, т.е. true.
А в реальности "побеждает" a={}.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Ликбез по Lua

Post by Shmuel »

John Doe wrote: А в реальности "побеждает" a={}.
Это верно для LuaJIT 2.0.4.
Для Lua 5.1, 5.2 и 5.3 побеждает nil.
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Ликбез по Lua

Post by SUSim »

Ковырял, ковырял, но не смог изменить штатными средствами макроса дату каталога (ну кроме вызывания диалога атрибутов клавишами)
Хотел оптом изменить атрибут времени у нескольких элементов.

Если изменить время файла средствами lua невозможно, подскажите ffi код позволяющий изменить время файла/директории.

Идея макроса такова - при обновлении какого либо файла обновляется время всех родительских папок, чтобы из корня видеть и добраться до всех последних изменений.
SimSU ··· ·· -- ··· ··-
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Ликбез по Lua

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Ликбез по Lua

Post by SUSim »

HaRT wrote:
В первом приближении хоть вручную, т.е. я изменил файл нажал кнопку и время всех родительских папопок изменилось на текущее.
Вопрос именно про возможность изменения времени а не только атрибутов средствами ЛУА.
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Ликбез по Lua

Post by Shmuel »

FFI. SetFileTime. Или искать готовую библиотеку. Похоже, что в LuaFAR нет подходящей функции.
Karagy
Posts: 57
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

Ликбез по Lua

Post by Karagy »

Предлагаю добавить в шапку замечательный перевод о истории языка Эволюция языка расширений: история Lua.
Кстати, раскрывающий пользу консервативности при разработке. А то я тут насмотрелся метаний с "total folder size in panel" - яркий пример неконсервативного подхода -)

P.S. Часть ссылок в шапке - уже мёртвые.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Ликбез по Lua

Post by buniak_a_h »

John Doe wrote:Дело в том, что стандартные функции lua не рассчитаны на работу с массивами, содержащими nil.
В вашей SHOW надо учесть количество элементов, и указывать его в unpack.
См. функцию select.
http://plugring.farmanager.com/downld/files/lookdbf.zip
Не подскажете, где можно прочитать об этой и аналогичных странностях LUA? Согласитесь, ситуация когда
lua:=unpack({1,nil,'q',false,nil,'zzz'})
возвращает

Code: Select all

1│ 1
2│ nil
3│ q
4│ false
5│ nil
6│ zzz
а тоже самое без второго элемента
lua:=unpack({1,'q',false,nil,'zzz'})
возвращает

Code: Select all

1│ 1
2│ q
3│ false
очень напоминает ошибку...
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Ликбез по Lua

Post by zg »

buniak_a_h wrote:очень напоминает ошибку...
http://www.freelists.org/post/luajit/le ... e-arrays,3
User avatar
Aidar
Posts: 541
Joined: Mon 09 Mar, 2009 22:43
Location: Kazan
Has thanked: 8 times
Been thanked: 7 times
Contact:

Ликбез по Lua

Post by Aidar »


User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Ликбез по Lua

Post by buniak_a_h »

Aidar wrote:
<...>
2.5.5 - Получение длины
...
Длиной таблицы t считается любой целый индекс n такой, что t[n] не равен nil, а t[n+1] равно nil.
Не объясняет первый пример. Либо должно работать одинаково (до первого nil-а), либо всё же похоже на ошибку.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Ликбез по Lua

Post by John Doe »

buniak_a_h wrote: до первого nil-а
Такого в мануале нет
Post Reply

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