Size: a a a

2020 April 21

S

Snusmumriken in pro.lua
В моём случае, я просто запускаю все обычные луа-скрипты примерно следующей CMD-командой:
 Тот код который я показал
           V
luajit c:/loader.lua c:/loadable.lua
                           ^
   скрипт, который я хочу запустить loader'ом
Я юзаю шорткаты notepad++, но можно вплавить loader в сишку, с минимальными изменениями, чтобы он запускал нужное тебе.
источник

S

Snusmumriken in pro.lua
Луа-скрипт, который запускает другой луа-скрипт, предоставляя ништяки и оставляя минимум собственных следов и предоставляя дебаг вокруг.
Тут даже traceback не ломается, он такой же как при запуске напрямую, я поработал над этим.
источник

LO

Lucky Ook in pro.lua
Snusmumriken
Вот такую (которая справа)
Отсыпьте пожалуйста. Интересно.
источник

S

Snusmumriken in pro.lua
Lucky Ook
Отсыпьте пожалуйста. Интересно.
источник

LO

Lucky Ook in pro.lua
Асанте сана!
источник

D

DaySandBox in pro.lua
Message from 🇮🇳 ࿗ ॐ Prathamesh Fad deleted. Reason: external link (?)
источник

D

DaySandBox in pro.lua
Message from Oyedalu Spy deleted. Reason: external link (?)
источник

KA

Kirill Akulov in pro.lua
Всем привет, подрубил LRDB, работает но всплыл момент подгрузки исходов: пока исполняется строка всё норм, а как появляется require - дебагер пытается грузить файл. но отлаживаю embeded linux, дебагер под win. Может подставить в require загрузку в строку и выполнение строки? если так где такое посмотреть как делают?
источник

A

Ameliance SkyMusic in pro.lua
Приветствую, есть пару вопросов, буду признателен, если кто поможет разобраться)
источник

A

Ameliance SkyMusic in pro.lua
#вопрос
Подскажите, когда может быть полезна данная конструкция (возвращение функции в функции)?

-- Closures and anonymous functions are ok:
function adder(x)
 -- The returned function is created when adder is
 -- called, and remembers the value of x:
 return function (y) return x + y end
end
a1 = adder(9)
a2 = adder(36)
print(a1(16))  --> 25
print(a2(64))  --> 100
источник

I

Igor725 in pro.lua
Ameliance SkyMusic
#вопрос
Подскажите, когда может быть полезна данная конструкция (возвращение функции в функции)?

-- Closures and anonymous functions are ok:
function adder(x)
 -- The returned function is created when adder is
 -- called, and remembers the value of x:
 return function (y) return x + y end
end
a1 = adder(9)
a2 = adder(36)
print(a1(16))  --> 25
print(a2(64))  --> 100
Первый пример, что в голову пришёл:
В love2d функция love.run вызывается после конфигурирования фреймворка и возвращает функцию основного цикла игры, которую будет вызывать сам фреймворк
источник

L

Leon174 in pro.lua
Там же написано про замыкания (closures) и анонимные функции. С этой информацией можно сразу припасть к первоисточнику знаний...

https://www.lua.org/pil/6.1.html
источник

A

Ameliance SkyMusic in pro.lua
Leon174
Там же написано про замыкания (closures) и анонимные функции. С этой информацией можно сразу припасть к первоисточнику знаний...

https://www.lua.org/pil/6.1.html
мой первоисточник Lua за 15 минут
источник

L

Leon174 in pro.lua
Ну, это для начала только годится, для ознакомления. Дальше lua.org и PiL. Последняя совсем не дефицит, в сети находится без проблем.

https://www.lua.org/pil/
источник

S

Snusmumriken in pro.lua
Kirill Akulov
Всем привет, подрубил LRDB, работает но всплыл момент подгрузки исходов: пока исполняется строка всё норм, а как появляется require - дебагер пытается грузить файл. но отлаживаю embeded linux, дебагер под win. Может подставить в require загрузку в строку и выполнение строки? если так где такое посмотреть как делают?
local func, err = loadstring("print(10)")
func()
> 10
источник

A

Ameliance SkyMusic in pro.lua
Leon174
Ну, это для начала только годится, для ознакомления. Дальше lua.org и PiL. Последняя совсем не дефицит, в сети находится без проблем.

https://www.lua.org/pil/
Спасибо, гляну, но это не главный вопрос, мне кажется этой штукой я вряд ли буду пользоваться) Просто нужно все равно разобраться, вдруг пригодится

Я не ас в программировании и это как хобби больше. На Lua программирую только скрипты для Reaper DAW. Вчера решил почитать, кое что по таблицам, метатаблицам и методам, освежить, а кое где продвинутся, но есть парочку вопросов, которые актуальны сейчас для меня больше. еще немного почитаю и если не разберусь, то задам)
источник

S

Snusmumriken in pro.lua
Ameliance SkyMusic
#вопрос
Подскажите, когда может быть полезна данная конструкция (возвращение функции в функции)?

-- Closures and anonymous functions are ok:
function adder(x)
 -- The returned function is created when adder is
 -- called, and remembers the value of x:
 return function (y) return x + y end
end
a1 = adder(9)
a2 = adder(36)
print(a1(16))  --> 25
print(a2(64))  --> 100
1. Итераторы:
function iter(tbl)
 local i = #tbl + 1
 return function()
   i = i - 1
   if not tbl[i] then return end
   return i, tbl[i]
 end
end

local t = {"a", "b", "c"}
for i, v in iter(t) do
 print(i, v)
end
> 3 c
> 2 b
> 1 a


2. Какие-нибудь сборщики значений:
function collector()
 local res = {}
 return function(v)
   if not v then return unpack(res) end
   res[#res + 1] = v
 end
end

local cl = collector()
cl(1)
cl(2)
cl(3)

a, b, c = cl()
print(a, b, c)
>1 2 3


3. Ещё что-нибудь смешное и забавное.
источник

AY

Arslan Yulbirdin in pro.lua
unpack разбивает таблицу на переменные?
источник

AY

Arslan Yulbirdin in pro.lua
Извиняюсь за внезапное вторжение
источник

S

Snusmumriken in pro.lua
Snusmumriken
1. Итераторы:
function iter(tbl)
 local i = #tbl + 1
 return function()
   i = i - 1
   if not tbl[i] then return end
   return i, tbl[i]
 end
end

local t = {"a", "b", "c"}
for i, v in iter(t) do
 print(i, v)
end
> 3 c
> 2 b
> 1 a


2. Какие-нибудь сборщики значений:
function collector()
 local res = {}
 return function(v)
   if not v then return unpack(res) end
   res[#res + 1] = v
 end
end

local cl = collector()
cl(1)
cl(2)
cl(3)

a, b, c = cl()
print(a, b, c)
>1 2 3


3. Ещё что-нибудь смешное и забавное.
Я, например, использовал подобные штуки для создания "функций-генераторов" математических функций:
-- осциллятор, пихаем общую частоту/частоту/амплитуду
local function osc(freq, ampl, rate)
   local sin = math.sin
   local tau = math.pi * 2
   local freq = freq or 400
   local ampl = ampl or 1
   local rate = rate or 44100
   local dt   = 1/rate
 
   local time = 0
   return function(fr)
       time = time + (fr or freq) * dt
       return sin(tau * time) * ampl
   end
end

local o = osc(400, 1, 44100) --> новый осциллятор

local samples = {}
for i = 1, 100 do
 -- генерим синусоиду
 samples[i] = o()
end

-- подаём samples на звуковуху ))
источник