https://forum.mikrotik.com/viewtopic.php?t=170591
:put [:typeof (>[])]
Return: «op» (ведет себя как «код»)
:global optype (>[:global z "blah"])
$optype
:put $z
# "blah"
Even can be a function with params using :do...
Code: Select all
:global optype (>[:do {:put "$1"}])
:put [:typeof $optype]
# op
$optype "hmm"
# hmm
:put $optype
# (evl (evl /docommand=;(evl (evl /putmessage=$1))))
Or with (>{}) it's an empty array...
Code: Select all
:global shortThanToArray (>{})
:put "$shortThanToArray $[:typeof $shortThanToArray] $[:len $shortThanToArray]"
# array 0
Найден новый тип даных РоутерОС "op"
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
- Brook
- Сообщения: 127
- Зарегистрирован: 24 май 2022, 00:29
Найти бы такой тип данных, который сможет развернуть функцию из такого вида
Не проверяли случаем?
Код: Выделить всё
(evl (evl /docommand=;(evl (evl /putmessage=$1))))
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
Разумеется это самый интересный вопрос !
Похоже не может.
Похоже не может.
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
Написал Вам Brook небольшое послание в личку
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947
-
- Сообщения: 1601
- Зарегистрирован: 15 сен 2017, 09:03
БЕРЁМ на ЗАМЕТКУ !
Гуру оффорума Rextended раскопал, что возможно тип "op" вероятно означает сокращенно "only pointer" (только указатель) и служит в основном для сокращения записи указателей к сложным вложенным элементам массивов в скриптовом языке РоутерОС https://forum.mikrotik.com/viewtopic.php?t=197255.
Это наглядно показывают следующие его примеры (для тех, кому интересно):
Нигде ни в какой документации эта вещь не упоминается. РоутерОС, как обычно полна сюрпризов !
Вероятно это может быть полезно при работе со сложными данными типа ассоциативных массивов, деревьев и т.п. ...
Практическое использование:
> b
> с
>a
>b
>c
> g;z
Гуру оффорума Rextended раскопал, что возможно тип "op" вероятно означает сокращенно "only pointer" (только указатель) и служит в основном для сокращения записи указателей к сложным вложенным элементам массивов в скриптовом языке РоутерОС https://forum.mikrotik.com/viewtopic.php?t=197255.
Это наглядно показывают следующие его примеры (для тех, кому интересно):
Код: Выделить всё
:global arraytest {"a";"b";"c";{"q";"z"}}
:put $arraytest
:global pointer (>($arraytest->1))
:put $pointer
:put [$pointer]
:set ($arraytest->1) "x"
:put $arraytest
:put $pointer
:put [$pointer]
:set [$pointer] "W"
:set $pointer "J"
:put $arraytest
:put $pointer
:put [$pointer]
:global pointer (>($arraytest->3))
:put $pointer
:put [$pointer]
:put ([$pointer]->1)
:set ([$pointer]->1) "RR"
:put $pointer
:put [$pointer]
:put $arraytest
Код: Выделить всё
:local ArrayIN { "alertList"="arrayvalue1","arrayvalue2";
"audioSettings"={ "DoP"={ "title"="DoP playback";
"type"="boolean";
"value"=false
};
"autoPlay"={ "title"="AutoPlay after boot";
"type"="boolean";
"value"=false
};
"soundCard"={ "data"={ {"id"=0;"name"="Default"}
};
"title"="Sound Card";
"type"="spinner";
"value"=0
};
"soundType"={ "data"={ {"id"=0;"name"="Mono Differential"};
{"id"=1;"name"="Stereo"}
};
"title"="Sound Type";
"type"="spinner";
"value"=1
};
"title"="Audio settings"
};
"broadcastModeSettings"={ "broadcastModeOptions"={ "downloadURL"="no URL provided";
"streamURL"="no URL provided"
};
"broadcastType"={ "data"={ {"id"=0;"name"="Default"};
{"id"=1;"name"="Stream URL"};
{"id"=2;"name"="Download URL"}
};
"title"="Broadcast Type";
"type"="spinner";
"value"=0
};
"enabled"=false;
"title"="Broadcast mode settings"
};
"deviceInfo"={ "autoUpgrade"=true;
"autoUpgradeInstall"=true;
"cpuTemp"="48 C";
"version"="2.16.37"
};
"multiroomSettings"={ "masterMode"=false;
"slaveList"="arrayvalue1","arrayvalue2"
};
"networkSettings"={ "connections"={ "LAN"={ "addresses"="192.168.0.101/24";
"dns"="192.168.0.1";
"gateway"="192.168.0.1";
"method"="auto";
"state"="connected"
};
"WLAN"={ "state"="disconnected" }
};
"interfaces"={ "LAN"={ "title"="Ethernet";
"type"="boolean";
"value"=true
};
"WLAN"={ "title"="Wi-Fi";
"type"="boolean";
"value"=false
}
};
"title"="Network settings";
"wifiList"="arrayvalue1","arrayvalue2"
};
}
:local btypeSection (>($ArrayIN->"broadcastModeSettings"->"broadcastType"))
:log info ([$btypeSection]->"type")
:local btypeType (>($ArrayIN->"broadcastModeSettings"->"broadcastType"->"type"))
:log info [$btypeType]
Нигде ни в какой документации эта вещь не упоминается. РоутерОС, как обычно полна сюрпризов !
Вероятно это может быть полезно при работе со сложными данными типа ассоциативных массивов, деревьев и т.п. ...
Практическое использование:
Код: Выделить всё
:global arraytest {"a";"b";"c";{"q";"z"}}
:global pointer (>($arraytest->1))
:put [$pointer]
Код: Выделить всё
:set pointer (>($arraytest->2))
:put [$pointer]
Код: Выделить всё
:global pointer
:for i from=0 to [:len $arraytest] do={
:set pointer (>($arraytest->$i))
:log info [$pointer]
}
>b
>c
> g;z
фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
viewtopic.php?f=14&t=13947