зачем require?

Здесь обсуждается всё, что касается макросов.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: зачем require

Post by Smitis »

Latest post of the previous page:

John Doe wrote:Так может и в скриптах не стоит, вот вам и решение проблемы, только представьте: простой доступ к любой функции, к любой переменной, в любом скрипте!
Не, ну до полного маразма я не предлагал доводить! ;) Я не говорю, что модули плохо и не надо их использовать.
Я вас скрипт не смотрел, но если вам нужна глобальная функция, одна, и пользователь об этом предупреждён, и имя функции к тому же настраиваемо, то почему бы и нет.
Завтра локальная командировка закончится, время будет, сделаю для разнообразия две версии, с глобальной функцией и без.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

http://forum.farmanager.com/viewtopic.p ... 82#p108182
Пример того, как один и тот же файл, не внося в него никаких изменений, можно использовать и как модуль, и как простой макрос.

Либо первое, либо второе, в зависимости от того, где вы его разместите: в scripts или modules.

P.S.
Это ничего особо не даёт, и с моей точки зрения даже лишнее.
Но мало ли, может на что и сгодится...
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: зачем require

Post by Smitis »

John Doe wrote:Либо первое, либо второе, в зависимости от того, где вы его разместите: в scripts или modules.
Можно и первое и второе, как-то так

Если бы в скрипт передавался полный путь к скрипту, было бы проще.

Также, можно не модифицирую package.path копировать скрипт в папку modules.
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

Не рекомендую ни свой, ни ваш метод.
Лучше запаковать в архив обе папки scripts и modules
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: зачем require

Post by Smitis »

John Doe wrote:Не рекомендую ни свой, ни ваш метод.
Лучше запаковать в архив обе папки scripts и modules
Значит, остаёмся каждый при своём мнении ;)
Разум когда-нибудь победит.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

Smitis wrote:Можно и первое и второе, как-то так

...
Также, можно не модифицирую package.path копировать скрипт в папку modules.
Кстати нормальная задача, почему бы не разрешить require загружать по полному пути.
Для этого можно добавить в package.path ?.lua (недостаточно)
Smitis wrote:Если бы в скрипт передавался полный путь к скрипту, было бы проще.
Интересно, что в скрипт модуля имя передаётся, конечно не полный путь, а просто имя (т.е. строка использованная при вызове require)
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: зачем require

Post by gotar »

Ладно. Я готов признаться в своем невежестве. Но посмотрите как хорошо сделан модуль ConsoleControl. Во-первых, модуль привязан не к автору, а к функции. Во-вторых внутри модуля никаких ретурнов. В-третьих actions всех макросов доступны как отдельные функции, вызывемые из других скриптов. Если бы еще внутри модуля можно было бы вызвать функцию Macro(или AddMacro) вообще была бы красота: нужна тебе какая-то група макросов - пишешь

Code: Select all

lm:post require "module.lua"
. Макросы перестали быть нужны - lm:load и все забылось. Нужен макрос на постоянную - пишешь require в каталог scripts.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

gotar wrote:Во-вторых внутри модуля никаких ретурнов. В-третьих actions всех макросов доступны как отдельные функции, вызывемые из других скриптов.
Это ж плохо, занимать глобальное пространство без нужды, и не предоставляя пользователю на этот счёт никакого выбора.
gotar wrote:Если бы еще внутри модуля можно было бы вызвать функцию Macro(или AddMacro) вообще была бы красота: нужна тебе какая-то група макросов - пишешь

Code: Select all

lm:post require "module.lua"
Это можно, кто не даёт.
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: зачем require

Post by gotar »

Это ж плохо, занимать глобальное пространство без нужды,
. На мой взгляд в данном случае этот тезис нуждается в обосновании.
не предоставляя пользователю на этот счёт никакого выбора.
Выбор есть - не нужны глобальные из конкретного файла, не пиши requirе.
Это можно, кто не даёт.
. Только толку нет - сейчас require не умеет грузить макросы.
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

gotar wrote:Выбор есть - не нужны глобальные из конкретного файла, не пиши requirе.
Утверждение на уровне "не нравится - не пользуйся".
gotar wrote:Только толку нет - сейчас require не умеет грузить макросы.
require ничего не умеет.
Но вы же сами нам показывали как получить доступ к Macro, сохранив функцию в глобальную переменную.
Или собственно кто не даёт взять её прямо из utils.lua
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: зачем require

Post by gotar »

Или собственно кто не даёт взять её прямо из utils.lua
Что Вы имеете ввиду?
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

copy/paste
P.S.
Я не пробовал
gotar
Posts: 420
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 17 times
Been thanked: 3 times

Re: зачем require

Post by gotar »

Я, например, не понимаю интерфейса между фаром и луа. Где и как задаётся, что при нажатии определенной клавиши нужно звать луа, где вычисляется индекс макроса в массиве LoadedMacros и т.п. Может быть Вы сумели разобраться в этих вопросах?
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: зачем require

Post by John Doe »

Например для вашей задачи не требуется разбираться в этих вопросах.
Post Reply

Return to “Обсуждение макросов”