k_voistinov
@kvoistinov привет, чем интересуешься?
набираюсь опыта с lua. Здесь чтобы что-то полезное узнать.
Snusmumriken
Ну хорошо )
R
Подскажите, в чём смысл делать вот так: function C:F() local obj = {} setmetatable(obj, self) self.__index = self } ?
Джифорсович
ну то есть понимаешь зачем они?
R
ты про метатаблицы читал?
Всё знаю, конкретно тут смысла не пойму. obj потом никак не используется.
R
Подправил фрагмент для полноты.
Джифорсович
ты ж к нему метатаблицу делаешь
Джифорсович
значит он нужен
Джифорсович
я так вижу
R
Нет, больше в функции не используется никак, и не возвращается. Может быть просто ошибка?
Leon174
Подскажите, в чём смысл делать вот так: function C:F() local obj = {} setmetatable(obj, self) self.__index = self } ?
Именно так делать смысла не видно. А это точно законченный фрагмент? Там явно потерялся return obj после self.__index = self.
Leon174
Можно и без return, если local убрать, но тогда и функция не нужна, тупо повесили на obj метатаблицу и где-то дальше obj используем. В вышеприведенном виде C:F() почти конструктор для создания каких-то инстансов, вот только никакие инстансы она не возвращает, поэтому почти. Так что да, смысла в этом чанке нет, return obj не хватает.
R
Фрагмент законченный, я только всякий вывод убрал.
Leon174
Бессмыслица какая-то. Создается локальная таблица, на нее вешается метатаблица, а потом obj сдыхает, когда сборщик мусора доберется. C:F(), pass и nop, с этого дня они никогда больше не расставались.
R
Там дальше веселее. Проверяется возврат C:F, если он nil, всё сваливается в фолбэк.
Leon174
Там где-нибудь по тексту Шива, Брахма или Вишна не упоминаются? Должны быть или return obj, или они. Ну или песни с плясками хотя бы.
Джифорсович
R
Конфуций упоминается. Типа, смирись и пили, они золотые.
Artem
всем привет, есть кто из города Курск?
Mikhail
Россия?
Artem
Курск в России
Mikhail
Я с Крымом перепутал. Сорян.
Artem
да последний к сожалению тоже Россия
Mikhail
Засада ☺️
Artem
Орёл, близковато
Вообщем ищу сотрудника в офис, решил сначала уточнить, насколько это реально с учетом локации
Igor
Вообщем ищу сотрудника в офис, решил сначала уточнить, насколько это реально с учетом локации
А, это по работе, не интересуюсь. Думал просто статистику собираете))))
Artem
А, это по работе, не интересуюсь. Думал просто статистику собираете))))
Можно сказать что статистику, насколько статистически вероятно что кто-то может в Курске знать lua, кроме меня
Igor
На луях на самом деле много кто пишет, но мало кто агитирует это и как-то взаимодействует с коммьюнити.
Lucky
Можно сказать что статистику, насколько статистически вероятно что кто-то может в Курске знать lua, кроме меня
Сделай сайт-визитку "Луяшим в Курске" В вк у себя репостни, обмажь хэштегами и узнаешь
R
Луа ещё и в резюме забывают упомянуть. Буквально вчера собесил мальчика, так факт знания им Луа выяснился почти случайно. На вопрос "почему не указал" ответ был "ну типа... а зачем... это же Луа, его и так все знают".
Mike_Went
ну так-то да
Snusmumriken
Но на самом деле нет )
Artem
я вот кого не собеседовал, так никто не слышал про lua
R
Ответ не мальчика но мужа.
Ответ полумужа, поленившегося прочитать вакансию. Потому что ищу я конкретно на Луа.
mva
Ответ полумужа, поленившегося прочитать вакансию. Потому что ищу я конкретно на Луа.
Твои показания не сходятся между двумя же соседними сообщениями
mva
То что он знает выяснилось случайно, то именно луа ты и ищешь
R
Твои показания не сходятся между двумя же соседними сообщениями
У не возомнил ли ты себя прокурором, мой юный друг?.. Рынок пуст, кого ХР скинули примерно похожего, того и общаю. Фраза "знание скриптовых языков" в резюме = достаточно похоже.
mva
Если ты "ищешь именно lua", а hr скидывают кого попало...
Luсky
и оно попало удачно...
Luсky
Вознеси хвалу Господу, ибо неисповедимы пути Его.
R
Ну, мне бы ещё С++, Эрланг и ассемблер aarch64, но сам понимаешь...
Leon174
Кудрявый набор. Хрюша вспотеет с вариантами.
Leon174
Это всё в одно рыло штоле?
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
Это относится именно к программированию в целом. Луа-специфичные вопросы это что-то типа "как сэкономить память при использовании таблиц", "как убедиться, что значение целое", "когда ваниль будет быстрее LuaJIT-а", в таком вот духе.
Именно луа-специфичные вопросы зачастую по метатаблицам, по синтаксису и по извращенским извращениям. Люди слишком привыкают пользоваться инструментами, не зная как они работают.
R
Редко нужно потому что. Соответственно и людей, заинтересованных понимать подкапотные вещи, достаточно мало.
A
После того как lua стали использовать в разных устройствах как встроенную систему, вариаций подкапотных вещей стало гораздо больше ))
R
У меня как раз похожий сценарий. Но скажу честно: оптимизировать на уровне моделей-алгоритмов гораздо интереснее, чем тюнить GC и т.п. По крайней мере, пока.
R
Хотя поначалу кажется, что если встройка, то однозначно С и Форт. Ан нет, Луа более чем адекватен.
A
Хотя поначалу кажется, что если встройка, то однозначно С и Форт. Ан нет, Луа более чем адекватен.
Да, возиться с приведением типов данных в системах типа KNX та ещё веселуха, если С или JS используется. То ли дело lua!
Wsevolod
Кто в курсе, в stalker какой-то суперсет lua используется?
Wsevolod
Если да, то самописный, или есть какое-то название?
Aydar
Кто в курсе, в stalker какой-то суперсет lua используется?
Видимо обычный lua, даже не luajit, отдельного названия нет.
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", это не ключевое слово. Так что в сталкере — обычная луа с чутка библиотечками.
Aydar
Оно в _G чтоли пишет? 0_о
Да. В целом это нормальная практика. Если ты про то что функция class глобальная.
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 — да, скорее всего глобальная. Они берут и заранее импортируют в каждый луа-стейт свой набор библиотек например.
Snusmumriken
Ну, на практике бесит только если дёргать цепочки вида foo"bar"{baz = 20, fobaz = 50}"crap""shit"{death_in_chains = true}
Snusmumriken
А там модули может в сэндбоксе, без _G?
С крайне высокой вероятностью, там под каждый скрипт заводится по луа-стейту или что-то подобное.
Snusmumriken
И зачем там сендбокс, кстати? Это же не серверное приложение, если что-то падает или перетирает — это можно отловить )
Anonymous
Ну передать в setfenv этот самый class, чтобы скриптолог(?) не модифицировал _G
Snusmumriken
Ну передать в setfenv этот самый class, чтобы скриптолог(?) не модифицировал _G
Поддержание чистоты — это то чем разработчики конечных продуктов обычно не заморачиваются, тем более что у этого есть накладные расходы. Лично я не удивлюсь, если вокруг каждого пользовательского скрипта делается текстовая обёртка с loadstring'ом, которая превращает её в функцию с аргументами, которую вызывают с табличкой для колбеков, которая потом пихает эти колбеки в списки и дёргает по нужде.