Size: a a a

2021 August 13

G

GNU/Vsevolod in pro.lua
Если да, то самописный, или есть какое-то название?
источник

AZ

Aydar Zarifullin in pro.lua
Видимо обычный lua, даже не luajit, отдельного названия нет.
источник

G

GNU/Vsevolod in pro.lua
Ну там синтаксис не тот немного
источник

G

GNU/Vsevolod in pro.lua
Есть кл. слова типа class и т.д.
источник

S

Snusmumriken in pro.lua
Ты про
class "my_cool_class"

-- это специальный метод - конструктор. Будет вызван при создании класса.
function my_cool_class:__init(num)
   self.my_param = num -- добавили в свой класс переменную
end

-- обычный метод
function my_cool_class:cool_method_of_my_class()
   get_console():execute("lua_bind_in_action_"..self.my_param)
end

-- деструктор, вызывается при сборке объекта сборщиком мусора. Аргументов не имеет (кроме скрытого self. об этом см. далее)
function my_cool_class:__finalize()
   get_console():execute("good_by_"..self.my_param)
end
?
источник

S

Snusmumriken in pro.lua
Попробуй написать на луа
print "hello world" ))

Если что, class тут это просто функция, которую вызвали со строкой "my_cool_class", это не ключевое слово.
Так что в сталкере — обычная луа с чутка библиотечками.
источник

G

GNU/Vsevolod in pro.lua
Оно в _G чтоли пишет? 0_о
источник

AZ

Aydar Zarifullin in pro.lua
Да. В целом это нормальная практика. Если ты про то что функция class глобальная.
источник

S

Snusmumriken in pro.lua
Нет конечно, просто вызов функции с одной строкой или одной таблицей можно делать без круглых скобок:

local lib = require'mylib'
или
http.request {
 url = "http://myurl",
 verb = "post",
 body = require'socket.ltn12'.source.string'this is body'
}
источник

S

Snusmumriken in pro.lua
require'socket.ltn12'
.source.
string"this is body"
==
require('socket.ltn12').source.string('this is body')
источник

S

Snusmumriken in pro.lua
А функция class — да, скорее всего глобальная. Они берут и заранее импортируют в каждый луа-стейт свой набор библиотек например.
источник

RA

R A in pro.lua
Кстати, одна из почему-то дико бесящих меня особенностей синтаксиса.
источник

S

Snusmumriken in pro.lua
Ну, на практике бесит только если дёргать цепочки вида

foo"bar"{baz = 20, fobaz = 50}"crap""shit"{death_in_chains = true}
источник

AM

Alexander Mitichev in pro.lua
А там модули может в сэндбоксе, без _G?
источник

S

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

S

Snusmumriken in pro.lua
И зачем там сендбокс, кстати? Это же не серверное приложение, если что-то падает или перетирает — это можно отловить )
источник

AM

Alexander Mitichev in pro.lua
Ну передать в setfenv этот самый class, чтобы  скриптолог(?) не модифицировал _G
источник

S

Snusmumriken in pro.lua
Поддержание чистоты — это то чем разработчики конечных продуктов обычно не заморачиваются, тем более что у этого есть накладные расходы. Лично я не удивлюсь, если вокруг каждого пользовательского скрипта делается текстовая обёртка с loadstring'ом, которая превращает её в функцию с аргументами, которую вызывают с табличкой для колбеков, которая потом пихает эти колбеки в списки и дёргает по нужде.
источник

S

Snusmumriken in pro.lua
О, кстати, смешная задачка: сделать луёвую таблицу, в которую можно добавлять сколько угодно функций, и они бы все вызывались ))
Ну там

tbl = {}
...

function tbl.foo(a, b)
 print("Hello", a + b)
end

function tbl.foo(a, b)
 print("World", a - b)
end

tbl.foo(10, 20)
> Hello 30
> World -10
источник

CP

Companion Philipp in pro.lua
index/newindex и всё
источник