Size: a a a

2020 April 21

L

Leon174 in pro.lua
Ameliance SkyMusic
спасибо
Вот еще подобный трюк.

function findpath (curr, to, path, visited)
   path = path or {}
   visited = visited or {}

Если аргументы path и/или visited не заданы, то есть они nil, то заводятся умолчальные пустые таблицы вместо непереданных аргументов. Чистенько, красивенько, луа.
источник

TT

TONYMIN TGD in pro.lua
И некий no value.
источник

TT

TONYMIN TGD in pro.lua
Есть ещё inf.
источник

S

Snusmumriken in pro.lua
TONYMIN TGD
И некий no value.
Давай ты этими проверками займёшься самостоятельно. Домашнее задание: сидеть и перебирать что получается при разном ковырянии циферок.
Не забудь про math.huge.

И ещё не забудь про 5.5 дней до бана.
источник

MA

Mons Anderson in pro.lua
nan легко проверяется

local function is_nan(v) return v ~= v end
источник

S

Snusmumriken in pro.lua
Я костылял на эту тему, мб в моём luajit чот не то.
источник

MA

Mons Anderson in pro.lua
NaN != NaN по определению из ISO'шного double
источник

S

Snusmumriken in pro.lua
Ну тады не докопал, пасиба, чекну : )
источник

AY

Arslan Yulbirdin in pro.lua
@Snusmumriken объясни пж, что такое luajit? В голове не укладывается компилятор для интерпретатора
источник

S

Snusmumriken in pro.lua
Это такой же интерпретатор как и обычный, только при запуске скрипта делает кучу штук таким образом, что код начинает исполняться в стотыщ раз быстрее.
источник

S

Snusmumriken in pro.lua
Как раз компилирует горячие последовательности байткода, да и без этого исполняет луа-код быстрее ванильного раза в три.
источник

AY

Arslan Yulbirdin in pro.lua
Так он и так быстрый, без оптимизации
источник

S

Snusmumriken in pro.lua
Он и так быстрый, а с оптимизациями, предельный прирост около 300 раз в сравнении с обычным.
источник

S

Snusmumriken in pro.lua
В среднем — luajit с включённым JIT быстрее в 20-50 раз. Это довольно много.
источник

A

Ameliance SkyMusic in pro.lua
Snusmumriken
В среднем — luajit с включённым JIT быстрее в 20-50 раз. Это довольно много.
сори, а это можно как-то применить в случае с тем, когда Луа встроен в другую программу?
источник

S

Snusmumriken in pro.lua
1. Можно встроить в другую программу luajit вместо lua.
2. Можно из луа дёрнуть
os.execute("luajit %path_to_script%") ))
источник

KA

Kirill Akulov in pro.lua
Snusmumriken
local func, err = loadstring("print(10)")
func()
> 10
Есть примеры как require переопределяют?
источник

S

Snusmumriken in pro.lua
Kirill Akulov
Есть примеры как require переопределяют?
Например, вот так можно описать require без кеширования скриптов.

function MyRequire(scriptname)
 local root = "c:/bin/lua"
 local path = root .. "/" .. scriptname .. ".lua"
 
 local file = assert( io.open(path, 'rb') )
 local code = file:read("*all")
 file:close()

 -- err - ошибка в коде при парсинге файла
 -- scriptname передаётся
 -- чтобы текст ошибок был привязан к
 -- scriptname, а не "ошибка в чанке кода"
 local func, err = loadstring(code, scriptname)

 if not func then error(err) end

 return func()
end
источник

S

Snusmumriken in pro.lua
А зачем тебе переопределять require?
источник

KA

Kirill Akulov in pro.lua
Ок, спасибо.
источник