Ликбез по Lua

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

Ликбез по Lua

Post by John Doe » Mon 02 Jul, 2012 05:41

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

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

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

Ликбез по Lua

Post by zg » Tue 30 Dec, 2014 13:10

Latest post of the previous page:

AleXH wrote:У вас есть дети? Вы им тоже отвечаете на вопрос "почему земля круглая?" - RTFM? - Если вопрос требует объёмных объяснений, либо предположительно потянет за собой таковые, то отсылку к RTFM хорошо бы сопроводить пояснением этого. Неумение отвечать на "глупые" вопросы говорит о не только о недостатке знаний у вопрошающего, но и об отсутствии соответствующего умения у отвечающего.
так нельзя разговаривать с людьми, у которых вы рассчитываете получить помощь. бан. навсегда.

EGez
Posts: 137
Joined: Thu 04 Oct, 2012 13:53
Location: Hamburg, DE
Has thanked: 2 times
Been thanked: 1 time

Ликбез по Lua

Post by EGez » Mon 05 Jan, 2015 23:47

AleXH wrote: У вас есть дети?
Есть.
AleXH wrote: Вы им тоже отвечаете на вопрос "почему земля круглая?" - RTFM?
Нет.

Отвечая на вопрос ребенка я учитываю тот факт, что разговариваю с ребенком. Здесь же, предполагаю, я в праве ожидать того, что вы не ребенок. Если я ошибаюсь, попросите сразу такого же отношения и к себе.
AleXH wrote: Неумение отвечать на "глупые" вопросы говорит о не только ...
Но вы же сами к полемике привели. И до меня вам уже несколько раз дали понять, что так не делается, что это неправильно и нелогично, и даже показали, как лучше сделать. Хоть сухо, но ведь корректно и без грубостей. К тому же, вы ведь знали, что Lua - это сторонняя разработка. Именно поэтому я и указал на контактную страницу разработчика. Всему же предел есть.

Ну вот, опять оффтопика пол страницы...

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

Ликбез по Lua

Post by John Doe » Sun 01 Feb, 2015 18:22

PIL на русском: http://aap13.narod.ru/PiL/ (перевод первого издания)

В прошлом году вышел перевод и третьего издания (Программирование на языке Lua, Иерузалимски Р.), но в электронном виде недоступен (если не считать пиратские сканы).

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

Ликбез по Lua

Post by John Doe » Sun 01 Feb, 2015 21:09

John Doe wrote:PIL на русском: http://aap13.narod.ru/PiL/ (перевод первого издания)
К сожалению далеко не полный, разделы 1 - 4
Attachments
PiL 1st ed. (rus) 1-4.chm.7z
(42.78 KiB) Downloaded 166 times

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

Ликбез по Lua

Post by Max Rusov » Thu 19 Feb, 2015 09:34

А почему при запуске макроса

Code: Select all

Macro {   description="test1"; area="Editor"; key="AltX"; 
  action=function()
    Keys("CtrlO")
  end;
}
Не происходит ожидаемого действия (не показывается пользовательский экран) ?

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

Ликбез по Lua

Post by John Doe » Thu 19 Feb, 2015 09:42

Ответ на ваш вопрос тут viewtopic.php?p=124463#p124463
Вот решение viewtopic.php?p=124492#p124492

А данная тема вообще не по макросам.

Max Rusov
Posts: 3600
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 7 times

Ликбез по Lua

Post by Max Rusov » Thu 19 Feb, 2015 10:52

Спасибо, Что-то получилось, хотя и не идеально.

ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

Ликбез по Lua

Post by ccaid » Mon 13 Apr, 2015 21:54

Code: Select all

> print(math.modf(0.2/0.1))
2       0
> print(math.modf(0.3/0.1))
2       1
> print(math.modf(0.4/0.1))
4       0
> print(math.modf(0.5/0.1))
5       0
> print(math.modf(0.6/0.1))
5       1
дробная часть, равная 1, это баг, или общеизвестная и неисправляемая особенность движка Lua, или это умолчательное поведение функций вывода, и если им чего-нибудь подкрутить, то будут выдавать типа 0.99999999999999999998 ?
Фар делают добрые люди

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Ликбез по Lua

Post by Shmuel » Mon 13 Apr, 2015 22:02

ccaid wrote: или это умолчательное поведение функций вывода, и если им чего-нибудь подкрутить, то будут выдавать типа 0.99999999999999999998 ?
Это правильный вариант ответа. Функция print внутри использует tostring(), которая специально ограничивает количество цифр, именно для того, чтобы не было по умолчанию "неприятного" вывода типа "0.99999999999999999998".

А подкрутить можно - преобразовать в строку самим - см. функцию basicSerialize в LuaMacro\api.lua.

ccaid
Posts: 805
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

Ликбез по Lua

Post by ccaid » Tue 14 Apr, 2015 05:48

для полноты картины приведу следующее:

Code: Select all

> a,b=math.modf(0.3/0.1)
> print( b==1 and '1' or b==0 and '0' or '0.xxx')
0.xxx
Фар делают добрые люди

Karagy
Posts: 56
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

Ликбез по Lua

Post by Karagy » Tue 14 Apr, 2015 20:15

Для полноты картины следует начинать с такого:

Code: Select all

> print(("%g"):format(3 - 0.3/0.1))
4.44089e-016

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Ликбез по Lua

Post by Shmuel » Tue 14 Apr, 2015 20:26

Ну мы же в Фаре! lua:=3-0.3/0.1

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva » Mon 22 Jun, 2015 16:28

Обнаружил, что после выполнения io.open функция io.write перестаёт работать, работает только io.stdout:write Так и задумано?
Вот пример:

Code: Select all

local file = io.open("aaa.a","w")
file:write("Writing to file\n")
--io.write("Writing to screen\n") -- ошибка: "standard output file is closed"
io.stdout:write("Writing to stdout\n")
io.close(file)

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

Ликбез по Lua

Post by John Doe » Mon 22 Jun, 2015 16:44

Не воспроизводится.

iva
Posts: 123
Joined: Sat 02 Nov, 2013 21:32
Been thanked: 3 times

Ликбез по Lua

Post by iva » Mon 22 Jun, 2015 16:51

Действительно в свеже-запущенном Far не воспроизводится. Тогда вопрос: как узнать что не в порядке с тем экземплярос Far, в котором проявляется. Иными словами, есть ли какая-нибудь возможность диагностики?

Shmuel
Posts: 5202
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Ликбез по Lua

Post by Shmuel » Mon 22 Jun, 2015 16:55

iva wrote: как узнать что не в порядке с тем экземплярос Far, в котором проявляется
С Фаром думаю всё в порядке. А проявлялось по-видимому в результате ваших предыдущих действий, то-есть закрытия stdout.

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

Ликбез по Lua

Post by John Doe » Mon 22 Jun, 2015 16:57

http://www.lua.org/manual/5.1/manual.html#pdf-io.close
Подозреваю где-то в вашем коде переменная file оказывается неинициализирована.
Можно попробовать заменить на io.close(assert(file))

Post Reply

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