заполнение простого массива значениями имен переменных

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

допустим есть такое:

:local a [:toaray "192.168.88.1, 10.10.10.5 , 16.10.11.2"]

Тут всё ясно, создаем простой массив a и заполняем его значениями ip.

А можно ли заполнить его значениями переменных типа так:

:local host1 192.168.88.1
:local host2 10.10.10.5
:local host3 16.10.11.2

:local a [:toaray $host1, $host2, $host3]

Оказывается фиг - так нельзя ... Рос не понимает такое ...
Как только не пробовал, удалось только так:

:local a ({});
:set ($a->0) $host1
:set ($a->1) $host2
:set ($a->2) $host3

Так можно. Но криво как то. Может есть более изящный рецепт ?


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Сам спросил, сам ответил - сам затупил ...
Конечно можно гораздо проще:

:local a ({$host1; $host2; $host3})

:-)


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Да можно и так:

Код: Выделить всё

[podarok66@RB750Gr3] > global ty {host1=192.168.88.1; host2=10.10.10.5; host3=16.10.11.2}
 
[podarok66@RB750Gr3] > :put ($ty->"host2")
10.10.10.5
Это смотря чего добиваешься от массива. Там можно вообще вложить приличную информацию в массив.Ну например:

Код: Выделить всё

[podarok66@RB750Gr3] >global ty {host1={gateway="192.168.88.1"; network="192.168.88.0/24"; addresses="DHCP"};host2={gateway="10.10.10.5"; network="10.10.10.0/26"; addresses="static"};host3={gateway="16.10.11.2"; network="192.168.101.0/24"; addresses="DHCP"};}   
 
[podarok66@RB750Gr3] > :put ($ty->"host2"->"network")
10.10.10.0/26

[podarok66@RB750Gr3] > :put ($ty->"host3")
addresses=DHCP;gateway=16.10.11.2;network=192.168.101.0/24



Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Приветствую, podarok66 !

Вы пишите про ключевые массивы, и тем более многомерные, а мне нужен был простой, не ключевой, содержащий только ip-адреса, но чтобы он "заполнялся" значениями переменных.
то есть нельзя просто объявить массив и указать в нем значения числами, а нужно сделать так, чтобы значения в массив попали из переменных.
Вот и изврат такой был.

Он кстати так и не решен способом :local a ({$host1; $host2; $host3}), выяснился странный глюк роутер ос - об этом напишу позже, когда "раскопаю" в чём дело ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Sertik, я вас категорически! А такой вариант чем не устраивает?

Код: Выделить всё

[podarok66@RB750Gr3] > :global host1 "192.168.88.1"
[podarok66@RB750Gr3] > :global host2 "10.10.10.5"            
[podarok66@RB750Gr3] > :global host3 "16.10.11.2"          
[podarok66@RB750Gr3] > :global ty {($host1);($host2);($host3);}
[podarok66@RB750Gr3] > :put $ty
192.168.88.1;10.10.10.5;16.10.11.2
[podarok66@RB750Gr3] > :put ($ty->2)
16.10.11.2
[podarok66@RB750Gr3] > :put ($ty->0)
192.168.88.1
[podarok66@RB750Gr3] > :global host4 "16.22.0.5"
[podarok66@RB750Gr3] > :set ty ($ty,($host4))       
[podarok66@RB750Gr3] > :put $ty                     
192.168.88.1;10.10.10.5;16.10.11.2;16.22.0.5


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Приветствую ещё раз. Хорошо, когда есть друзья ! :co_ol:

Всё верно !

P/S С испугу, после работы или от усталости разделителями между элементами массива запятые поставил !

Код: Выделить всё

:local a ({$host1, $host2, $host3})
:-) Ну и как следствие - объявление трех элементов в массиве РОС считала одной строкой ... ;;-)))


, а правильно конечно

Код: Выделить всё

:local a ({$host1; $host2; $host3})
ну или :global ...

Отдыхать нужно своевременно ... И новости по телику меньше смотреть ...

В Вашем примере всё верно ! Простите ДОКа (совсем у нас пора горячая ...)
Тему можно закрыть.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить