Size: a a a

2019 November 23

ШТ

Шмель Тяжеловес in pro.lua
Самое простое
string.format()
источник

ШТ

Шмель Тяжеловес in pro.lua
@Snusmumriken как-то выкладывал кусочек кода простого шаблонизатора
источник

MT

Monsieur Taishín in pro.lua
Мда, проще в каждом цикле создавать эту переменную -_-
источник

A

Anton in pro.lua
Шмель Тяжеловес
Пока точно не буду этим заниматься. Может в след году. Сперва нужно точно понять, чем именно отличаются версии 5.1 и 5.2. Потом сравнить кодовую базу референсных интерпретаторов. Станет понятен объем работы. Учитывая сколько в luajit наворочено - объем скорее всего большой. Хотя если Mike Pall в одиночку запилил jit..  Сколько у него на это времени ушло
Суммарно порядка 10 лет, кажется... на luajit.org есть таймлайн, с самой первой версии.
источник

MT

Monsieur Taishín in pro.lua
источник

MT

Monsieur Taishín in pro.lua
А , есть ли более красивый способ написать такое:
if x>72 and x < 77 and y>19 and y<27 then
       ..
   end
   -----
   if x>30 and x<34 and y>21 and y<31 then
       ...
   end

Это координаты кликов на экране.
источник

OK

Oleg Koshovetc in pro.lua
Monsieur Taishín
А , есть ли более красивый способ написать такое:
if x>72 and x < 77 and y>19 and y<27 then
       ..
   end
   -----
   if x>30 and x<34 and y>21 and y<31 then
       ...
   end

Это координаты кликов на экране.
Я б написал функцию для проверки и использовал ее

local function in_range(x, y, range)
 return
   x > range[1][1] and x < range[1][2]
   and
   y > range[2][1] and y < range[2][2]
end

if in_range(x, y, {{72, 77}, {19, 27}}) then
 do_something()
end

if in_range(x, y, {{30, 34}, {21, 31}}) then
 do_another_thing()
end


Если производительность в этом месте не слишком важна, выглядеть будет чуть посимпатичнее
источник

S

Snusmumriken in pro.lua
Monsieur Taishín
Подскажите (искал, не нашел, но может криво искал?) есть ли аналог как в питоне:
'{0} {1}'.format('Hello', 'World')

У меня на луа есть переменная с хтмлом, нужно динамически изменять в некоторых местах некоторый текст, да, можно было бы туда засунуть переменные, но хочется этот хтмл вывести в начало программы и уже потом его использовать
Где-то тут был мегапростой супершаблонизатор
источник

S

Snusmumriken in pro.lua
Snusmumriken
Ну типа. Я ещё писал самый простой в мире шаблонизатор, примерно такой:
function t(tmpl, tbl)
 local function replace(c)
   return tbl[c] or '{' .. c .. '}'
 end
 return tmpl:gsub('{(.-)}', replace)
end

local tmpl = "Hello {bla}!"

local str = t(tmpl, {bla = 'World'})
-->"Hello World!"
Вот тут. Загоняем табличку с ключами, получаем ништяки.
источник

MT

Monsieur Taishín in pro.lua
Snusmumriken
Вот тут. Загоняем табличку с ключами, получаем ништяки.
О! я чет помню такое. Я заюзал
function interp(s, tab)
 return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end))
end
источник

S

Snusmumriken in pro.lua
Вот да, что-то похожее
источник

S

Snusmumriken in pro.lua
Только $ в регулярке лишнее, помнится. Поправь регулярку.
источник
2019 November 24

A

Alex in pro.lua
Всем привет
источник

A

Alex in pro.lua
Подскажите,нужно в конце скрипта вывести время его работы,в минутах и секундах как это проще сделать?
источник

I

Igor725 in pro.lua
Берёшь время старта, пишешь в переменную, а потом из времени окончания вычитаешь время старта
источник

I

Igor725 in pro.lua
В юникс формате время можно получить функцией os.time()
источник

A

Alex in pro.lua
Делал так:
в начале скрипта -
startTimeMin = os.date('%M')
startTimeSec = os.date('%S')

в конце

endTimeMin = os.date('%M')
endTimeSec = os.date('%S')

ну и затем в принт вставлял это дело так:

workTime = endTimeMin - startTimeMin..' мин. '..endTimeSec - startTimeSec..' сек.'

Вообщем правильно через раз отображается, только что показало время выполнения минус 53 минуты 😂

Знаю что есть os.clock но как его вывести не поймк
источник

I

Igor725 in pro.lua
Там в секундах
источник

S

Snusmumriken in pro.lua
Alex
Подскажите,нужно в конце скрипта вывести время его работы,в минутах и секундах как это проще сделать?
Блин
источник

S

Snusmumriken in pro.lua
local stamp = os.time()

... код скрипта


stamp = os.time() - stamp
print(stamp, stamp/60)
источник