Коллеги, кто знает, поясните. Как известно, в скриптах Микротик можно использовать функции. Как создавать и удалять "глобальные" функции (определенные как глобальные переменные, известные всем скриптам и терминалу т.е. "всей" РОС) из окружения переменных мы знаем (уже обсуждалось на форуме) ...
У меня такой вопрос, маленький ... Встретил в одном скрипте такой приём проверки функции на определение (т.е. проверки определена ли функция уже - пристутствует ли она в окружении переменных). Это бывает нужно, когда пишется большая библиотека функций и не хочется загружать маршрутизатор не нужными и ошибочными повторными "определениями" ...
Автор писал так:
:global fJParsePrint
:if (!any $fJParsePrint) do={ :global fJParsePrint do={
То есть по смыслу это звучит (вроде !) так: Если функции еще нет в окружении переменных, тогда определяем её ... Если есть - не делаем этого ...
Вопроса собственно два:
1. Правильно я это себе понимаю ?
2. Что такое "!any" в данном выражении ? (В официальном wiki scripts ключевого слова "any" не нашел вообще !). Тыкните носом, пожалуйста ...
проверка на развернутость функции в скрипте
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
Никто не знает ?
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Я тоже не нашёл. Попробовал сам. Объявляю переменную
Начинаю проверку (вторая строка ответ)
Повторяю проверку, но нужно учитывать, что значение переменной изменилось из-за выполнения предыдущего скрипта
Видимо, это выражение проверяет значение переменной на "непустость" . Самое интересное, что это выражение одинаково реагирует и на nil и на nothing (пустое множество :set re {:} обрабатывается как переменная имеющая значение). Берём на заметку. Спасибо, Sertik!
Код: Выделить всё
global re;
Код: Выделить всё
{:global re; :if (!any $re) do={:put "No Global re!"; :set re 2 } else={:put "Global re yes!"}}
No Global re!
Код: Выделить всё
{:global re; :if (!any $re) do={:put "No Global re!"; :set re 2 } else={:put "Global re yes!"}}
Global re yes!
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
Это Вам спасибо, podarok66 !
Вы настоящий модератор, не нервный, как некоторые ... (не будем показывать пальцем), а очень приятный в общении человек. Модератор только таким и должен быть.
Удачи Вам во всем и моя дружба как обещал (а она, поверьте, дорогого стоит, для тех кто понимает) ...
P/S Это выражение было мной подмечено в одном скрипте автора Chupakabra (легко гуглиться, статья про JSON-парсер на Микротик на Хабре.
Наводит на мысль, что есть недокументированные многие вещи в Микротик Рос, которые кто-то знает, или как -то раскапывает, но нам компания не сообщает об этом естественно ....
Это собственно обычная практика почти всех разработчиков, чего там обижаться. Капитализм есть капитализм - конкуренция ...мать её ...
Или просто им некогда ... на нас простых смертных время тратить ... тоже вариант
Вы настоящий модератор, не нервный, как некоторые ... (не будем показывать пальцем), а очень приятный в общении человек. Модератор только таким и должен быть.
Удачи Вам во всем и моя дружба как обещал (а она, поверьте, дорогого стоит, для тех кто понимает) ...
P/S Это выражение было мной подмечено в одном скрипте автора Chupakabra (легко гуглиться, статья про JSON-парсер на Микротик на Хабре.
Наводит на мысль, что есть недокументированные многие вещи в Микротик Рос, которые кто-то знает, или как -то раскапывает, но нам компания не сообщает об этом естественно ....
Это собственно обычная практика почти всех разработчиков, чего там обижаться. Капитализм есть капитализм - конкуренция ...мать её ...
Или просто им некогда ... на нас простых смертных время тратить ... тоже вариант
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Ну вы меня насмешили, право слово. Вы у меня дома или на работе сказали бы такое, вам бы понарассказали про меня "не нервного"
У меня характер взрывной, могу орать на ровном месте, шумлю часто, слыву язвой и матершинником. Раньше ещё и подраться не дурак был. Ща постарел, нет того запала.
Да и нет тут на форуме ситуаций из ряда вон, редко что-то проскочит. А что и вылезает, решается легко.Пока пишу, остываю и начинаю общаться спокойно.
По скрипту, я эту статью читал, мне вроде как для моих маленьких задач такое не нужно. Вот и не обратил внимания на такой приём. А сейчас вот покопался, мне понравилась такая возможность.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
Ладно, ладно, не скромничайте .... Ну а по нашей жизни даже академики нередко нецензурную лексику вспоминают ... если для дела нужно и помогает - то даже очень хорошее лекарство, то что доктор прописал
Вот лучше скажите есть ли кроме Вики нормальные мануалы то по Микроту - ну должны же быть ... Как сами то фирмачи работают ... Или это государственная тайна Латвии и США ?
Вот лучше скажите есть ли кроме Вики нормальные мануалы то по Микроту - ну должны же быть ... Как сами то фирмачи работают ... Или это государственная тайна Латвии и США ?
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
От меня маленький подарочекXX для podarok66
Этот кусочек скрипта я называю "householder". Вы поймете ... Ещё раз Вам спасибо за any ...
:global Rsh;
:foreach i in=[/user active find] do={:if (([/user active get $i name]="admin") && ([/user active get $i via]="winbox")) do={:set $Rsh}}
:if (any $Rsh) do={ ..... }
Только вот так не работает и пришлось вот так делать ...
global Rsh "run";
:foreach i in=[/user active find] do={:if (([/user active get $i name]="admin") && ([/user active get $i via]="winbox")) do={:set $Rsh}}
:if ([:len $Rsh]!=0) do={ ..... }
Что то я не допонял any. Это выражение именно значение переменной проверяет на "непустость" получается, а не "объявленность" ?
То есть, если с any, то вероятно вот так нужно было бы писать:
global Rsh "run";
:foreach i in=[/user active find] do={:if (([/user active get $i name]="admin") && ([/user active get $i via]="winbox")) do={:set $Rsh}}
:if (any $Rsh) do={ ..... }
Вчера, просто, уже мозг не варил совсем ...
Этот кусочек скрипта я называю "householder". Вы поймете ... Ещё раз Вам спасибо за any ...
:global Rsh;
:foreach i in=[/user active find] do={:if (([/user active get $i name]="admin") && ([/user active get $i via]="winbox")) do={:set $Rsh}}
:if (any $Rsh) do={ ..... }
Только вот так не работает и пришлось вот так делать ...
global Rsh "run";
:foreach i in=[/user active find] do={:if (([/user active get $i name]="admin") && ([/user active get $i via]="winbox")) do={:set $Rsh}}
:if ([:len $Rsh]!=0) do={ ..... }
Что то я не допонял any. Это выражение именно значение переменной проверяет на "непустость" получается, а не "объявленность" ?
То есть, если с any, то вероятно вот так нужно было бы писать:
global Rsh "run";
:foreach i in=[/user active find] do={:if (([/user active get $i name]="admin") && ([/user active get $i via]="winbox")) do={:set $Rsh}}
:if (any $Rsh) do={ ..... }
Вчера, просто, уже мозг не варил совсем ...
Последний раз редактировалось Sertik 09 апр 2019, 18:27, всего редактировалось 2 раза.
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
- podarok66
- Модератор
- Сообщения: 4361
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Чтобы уж совсем нормальные - нет, не встречал. Очень интересно было у Скоромнова, но я что-то потерял ссылку на его Вики-подобный сайт. Но там тоже работы непочатый край. У большинства - решения совсем уж часто встречающихся задач. Для чего-то типа вышеуказаного, как у Чупакабры у большинства не хватает либо знаний ( у меня, допустим) , либо финансовые вопросы важнее стремления к менторству, либо природная лень вошла в силу и гнёт несказанно.
Для терпеливых людей наиболее предпочтительным вижу официальную Вики в качестве основы. Остальное по сусекам по чуть-чуть собирать.
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
Спасибо, что же делать, будет терпеливо собирать по сусекам ...
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947