Snusmumriken
Ну хорошо )
Aiwan \ (•◡•) / _bot
R
Подскажите, в чём смысл делать вот так:
function C:F()
local obj = {}
setmetatable(obj, self)
self.__index = self
}
?
Джифорсович
Джифорсович
ну то есть понимаешь зачем они?
R
Подправил фрагмент для полноты.
Джифорсович
Джифорсович
ты ж к нему метатаблицу делаешь
Джифорсович
значит он нужен
Джифорсович
я так вижу
R
Нет, больше в функции не используется никак, и не возвращается. Может быть просто ошибка?
Leon174
Можно и без return, если local убрать, но тогда и функция не нужна, тупо повесили на obj метатаблицу и где-то дальше obj используем. В вышеприведенном виде C:F() почти конструктор для создания каких-то инстансов, вот только никакие инстансы она не возвращает, поэтому почти. Так что да, смысла в этом чанке нет, return obj не хватает.
R
R
Фрагмент законченный, я только всякий вывод убрал.
Leon174
Бессмыслица какая-то. Создается локальная таблица, на нее вешается метатаблица, а потом obj сдыхает, когда сборщик мусора доберется. C:F(), pass и nop, с этого дня они никогда больше не расставались.
R
Там дальше веселее. Проверяется возврат C:F, если он nil, всё сваливается в фолбэк.
Leon174
Там где-нибудь по тексту Шива, Брахма или Вишна не упоминаются? Должны быть или return obj, или они. Ну или песни с плясками хотя бы.
Джифорсович
R
Конфуций упоминается. Типа, смирись и пили, они золотые.
Artem
всем привет, есть кто из города Курск?
Mikhail
Россия?
Artem
Курск в России
Mikhail
Я с Крымом перепутал. Сорян.
Artem
да последний к сожалению тоже Россия
Mikhail
Засада ☺️
Igor
Artem
Орёл, близковато
Вообщем ищу сотрудника в офис, решил сначала уточнить, насколько это реально с учетом локации
Igor
Igor
На луях на самом деле много кто пишет, но мало кто агитирует это и как-то взаимодействует с коммьюнити.
Lucky
R
Луа ещё и в резюме забывают упомянуть. Буквально вчера собесил мальчика, так факт знания им Луа выяснился почти случайно. На вопрос "почему не указал" ответ был "ну типа... а зачем... это же Луа, его и так все знают".
Luсky
Mike_Went
Mike_Went
ну так-то да
Snusmumriken
Но на самом деле нет )
Artem
я вот кого не собеседовал, так никто не слышал про lua
mva
mva
То что он знает выяснилось случайно, то именно луа ты и ищешь
mva
Если ты "ищешь именно lua", а hr скидывают кого попало...
Luсky
и оно попало удачно...
Luсky
Вознеси хвалу Господу, ибо неисповедимы пути Его.
R
Ну, мне бы ещё С++, Эрланг и ассемблер aarch64, но сам понимаешь...
Leon174
Кудрявый набор. Хрюша вспотеет с вариантами.
Leon174
Это всё в одно рыло штоле?
Luсky
Snusmumriken
Умиляет обычно другое, когда "ну это же луа, его все знают" — а знают на самом деле только на уровне
function event.foo(a, b, c)
if a == "bar" then
callFunction(b, c)
end
end
И всё. И программировать в целом не умеют, структурировать тоже.
R
R
Умиляет обычно другое, когда "ну это же луа, его все знают" — а знают на самом деле только на уровне
function event.foo(a, b, c)
if a == "bar" then
callFunction(b, c)
end
end
И всё. И программировать в целом не умеют, структурировать тоже.
Это относится именно к программированию в целом. Луа-специфичные вопросы это что-то типа "как сэкономить память при использовании таблиц", "как убедиться, что значение целое", "когда ваниль будет быстрее LuaJIT-а", в таком вот духе.
Snusmumriken
R
Редко нужно потому что. Соответственно и людей, заинтересованных понимать подкапотные вещи, достаточно мало.
A
После того как lua стали использовать в разных устройствах как встроенную систему, вариаций подкапотных вещей стало гораздо больше ))
R
У меня как раз похожий сценарий. Но скажу честно: оптимизировать на уровне моделей-алгоритмов гораздо интереснее, чем тюнить GC и т.п. По крайней мере, пока.
R
Хотя поначалу кажется, что если встройка, то однозначно С и Форт. Ан нет, Луа более чем адекватен.
Wsevolod
Кто в курсе, в stalker какой-то суперсет lua используется?
Wsevolod
Если да, то самописный, или есть какое-то название?
Wsevolod
Wsevolod
Есть кл. слова типа class и т.д.
Snusmumriken
Ну там синтаксис не тот немного
Ты про
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?
Snusmumriken
Попробуй написать на луа
print "hello world" ))
Если что, class тут это просто функция, которую вызвали со строкой "my_cool_class", это не ключевое слово.
Так что в сталкере — обычная луа с чутка библиотечками.
Wsevolod
Snusmumriken
Нет конечно, просто вызов функции с одной строкой или одной таблицей можно делать без круглых скобок:
local lib = require'mylib'
или
http.request {
url = "http://myurl",
verb = "post",
body = require'socket.ltn12'.source.string'this is body'
}
Snusmumriken
require'socket.ltn12'.source.string"this is body"
==
require('socket.ltn12').source.string('this is body')
Snusmumriken
А функция class — да, скорее всего глобальная. Они берут и заранее импортируют в каждый луа-стейт свой набор библиотек например.
R
Snusmumriken
Ну, на практике бесит только если дёргать цепочки вида
foo"bar"{baz = 20, fobaz = 50}"crap""shit"{death_in_chains = true}
Anonymous
Snusmumriken
И зачем там сендбокс, кстати? Это же не серверное приложение, если что-то падает или перетирает — это можно отловить )
Anonymous
Ну передать в setfenv этот самый class, чтобы скриптолог(?) не модифицировал _G
Snusmumriken
Ну передать в setfenv этот самый class, чтобы скриптолог(?) не модифицировал _G
Поддержание чистоты — это то чем разработчики конечных продуктов обычно не заморачиваются, тем более что у этого есть накладные расходы. Лично я не удивлюсь, если вокруг каждого пользовательского скрипта делается текстовая обёртка с loadstring'ом, которая превращает её в функцию с аргументами, которую вызывают с табличкой для колбеков, которая потом пихает эти колбеки в списки и дёргает по нужде.