Asior 586 Опубликовано: 24 августа, 2018 У меня тут вопрос возник, а этот фрагмент кода вообще работает local component = require'component' Просто как-то привык что всегда вызывается в скобках local component = require('component') Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 24 августа, 2018 (изменено) Прекрасно работает. Cинтаксис Lua разрешает не заключать в скобки единственный параметр функции, являющийся строковым литералом или конструктором таблицы. Пруф: http://www.lua.org/manual/5.2/manual.html#3.4.9 Записи вида f'string', f"string" и f[[string]] эквивалентны f('string'). Аналогично и для конструкторов таблиц: f{fields} эквивалентно f({fields}) Изменено 25 августа, 2018 пользователем eu_tomat 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 24 августа, 2018 (изменено) Это есть наиполезнейшая штука, чтобы творить жутчайшей степени норкоманию. Особенно вместе с метаметодами. Например: rule(public) { every "10 seconds" } (function(state) state.counter = state.counter + 1 end) Раскрывается оно в это: rule(public)({every("10 seconds")})(function(state) state.counter = state.counter + 1 end) Не знаю, где такое в принципе может пригодиться, но такая крайняя эволюция идеи о Fluent interface меня в последнее время сильно забавляет. Так можно на базе Lua запилить и какой-нибудь миниязык даже. class [[public static]] "What" { member [[public static]] "main" (throws "IOException") (function() throw(new "IOException"("what.")); end); } И раскрытие: class("public static")("What")({ member("public static")("main")(throws "IOException")(function() throw(new("IOException")("what.")) end) }) Неясен тут только смысл. Изменено 25 августа, 2018 пользователем Fingercomp 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kaka888 10 Опубликовано: 14 января, 2019 Fingercomp, можно таким образом оформить свои программы, чтобы читая их, никому не было понятно, что они делают) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 14 января, 2019 36 минут назад, kaka888 сказал: Fingercomp, можно таким образом оформить свои программы, чтобы читая их, никому не было понятно, что они делают) Это вряд ли. Кто-то всё равно разберётся в особенностях твоего кода, если программа достаточно ценна. А если она бесполезна, то вчитываться в её код и так мало желающих. Бесполезность программы является лучшей защитой от чтения кода. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kaka888 10 Опубликовано: 14 января, 2019 Но всё же додумаются немногие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior Автор вопроса 586 Опубликовано: 14 января, 2019 Над шифровкой программ давно уже думали. Как вариант это применять какой-то сложный алгиритм преобразования и порциями загружать в оперативку через load. Но всеравно, отледить и дешифровать можно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
kcalBxoF 15 Опубликовано: 15 января, 2019 14.01.2019 в 21:23, Asior сказал: Над шифровкой программ давно уже думали. Как вариант это применять какой-то сложный алгиритм преобразования и порциями загружать в оперативку через load. Но всеравно, отледить и дешифровать можно. Жаль байткоды отключены у load, байткоды мало кто использует Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 15 января, 2019 26 минут назад, kcalBxoF сказал: Жаль байткоды отключены у load, байткоды мало кто использует Байткод тоже можно преобразовать в исходный. Правда, с потерей комментариев и локальных названий. Но даже такой может иметь ценность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic 51 Опубликовано: 8 февраля, 2022 В 24.08.2018 в 23:07, Fingercomp сказал: Это есть наиполезнейшая штука, чтобы творить жутчайшей степени норкоманию. Особенно вместе с метаметодами. Например: rule(public) { every "10 seconds" } (function(state) state.counter = state.counter + 1 end) Раскрывается оно в это: Показать содержимое rule(public)({every("10 seconds")})(function(state) state.counter = state.counter + 1 end) Не знаю, где такое в принципе может пригодиться, но такая крайняя эволюция идеи о Fluent interface меня в последнее время сильно забавляет. Так можно на базе Lua запилить и какой-нибудь миниязык даже. class [[public static]] "What" { member [[public static]] "main" (throws "IOException") (function() throw(new "IOException"("what.")); end); } И раскрытие: Скрыть содержимое class("public static")("What")({ member("public static")("main")(throws "IOException")(function() throw(new("IOException")("what.")) end) }) Неясен тут только смысл. какой наыиг класс? в lua есть обекты но классов нет 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
У меня тут вопрос возник, а этот фрагмент кода вообще работает
Просто как-то привык что всегда вызывается в скобках
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах