Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Есть тут какие-нибудь ассоциативные массивы, хеши, мапы?

    Есть тут какие-нибудь ассоциативные массивы, хеши, мапы?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Есть тут какие-нибудь ассоциативные массивы, хеши, мапы?, RouterOS
     
    maximt
    Guest
    #1
    0
    17.08.2013 07:53:00
    Есть тут какой-нибудь ассоциативный массив, хеш или мап?
     
     
     
    boen_robot
    Guest
    #2
    0
    17.09.2013 12:00:00
    Только что увидел эту тему, которая, кажется, говорит о том, что ассоциативные массивы ЕСТЬ, и к ключу можно обращаться с помощью $array->"key". Но потом я попытался определить один из скрипта, но так и не смог сопоставить ключ (вместо этого всегда возвращалась пустая строка). Я пробовал:
    local assoc ({},"a"="test1")
    local assoc ({"a"="test1"})
    local assoc {"a"="test1"}
    Во всех случаях получал один и тот же результат. Кстати, последний синтаксис создает массив с двумя числовыми элементами — значение "a" со смещением 0 и "test1" со смещением 1. (Использую 6.4) @MikroTik support Есть ли способ определить ассоциативный массив пользователем (и потом обращаться к нему с помощью вышеописанного, или другого, синтаксиса), или это сейчас только поддерживается внутри системы? Если пока только внутри — есть ли планы добавить это для пользователей в ближайшем будущем?
     
     
     
    mrz
    Guest
    #3
    0
    17.09.2013 12:08:00
    [admin@x86] > :global aaa {a=1;b=2;c=3}
    [admin@x86] > :put ($aaa->“a”) 1
    [admin@x86] > :put ($aaa->“b”) 2
     
     
     
    boen_robot
    Guest
    #4
    0
    17.09.2013 12:12:00
    Ну... ЭТО, похоже, работает. И я тоже попробовал временные метки и логические значения, и они тоже работают. В этом случае, похоже, проблема ограничивается только строковыми значениями - они всегда пусты. И ещё, новый “->” пока ещё не документирован.
     
     
     
    mrz
    Guest
    #5
    0
    17.09.2013 12:16:00
    Не могли бы вы привести примеры строк, которые не работают?
     
     
     
    boen_robot
    Guest
    #6
    0
    17.09.2013 12:20:00
    Только что сделал, как в последнем посте: :local assoc {"a"="test1"}
    :put [($assoc->"a")] Если заменить "test1" на число, время или булево значение, всё работает как надо, но это — нет, и даже раскотировка строки не помогает, т.е. :local assoc {"a"=test1}
    :put [($assoc->"a")] тоже выводит пустую строку. Всё это из скрипта в "/system script", который потом "run"-ится из окна Winbox терминала, а роутер — x86 машина (на всякий случай, вдруг это важно).
     
     
     
    mrz
    Guest
    #7
    0
    17.09.2013 12:33:00
    Спасибо, это ошибка, создает массив из обоих элементов (см.: вывод окружения). Мы это исправим.
     
     
     
    jonmansey
    Guest
    #8
    0
    07.10.2013 20:54:00
    Как установить значение только одного элемента хеша? :global assoc {a=1;b=2;c=3}; :put ($assoc->“a”) 1 :put ($assoc->“b”) 2 env pr assoc={a=1; b=2; c=3} теперь я хочу изменить значение b :set assoc {b=5} :put ($assoc->“b”) 5 но теперь, когда я смотрю другие строки, они исчезли. Хеш уничтожил остальные элементы. :put ($assoc->“a”) env pr assoc= какой правильный синтаксис команды `set`, чтобы изменить только один элемент хеша? Спасибо.
     
     
     
    efaden
    Guest
    #9
    0
    14.11.2013 16:34:00
    А тут вообще ответ был? Как установить отдельный элемент в массиве? Или в ассоциативном массиве?
     
     
     
    mrz
    Guest
    #10
    0
    15.11.2013 11:24:00
    `set` перезаписывает значение переменной, поэтому в примере ты задаешь массив с одним элементом: `set assoc {b=5}`. Сейчас нет команды для изменения отдельного элемента в массиве.
     
     
     
    efaden
    Guest
    #11
    0
    15.11.2013 12:26:00
    Ну, ладно. Помогаю кому-то с проектом, а эти практически отсутствующие структуры данных и отсутствие атомарных операций — это проблема. Не могу использовать pick и set, потому что если поток прервётся, я буду совсем в затруднительном положении… Нужен какой-нибудь семафор/мьютекс или что-то в этом роде, плюс push/pop и реальные связные списки, это было бы очень полезно.
     
     
     
    mrz
    Guest
    #12
    0
    15.11.2013 13:24:00
    Планируем добавить команды для изменения отдельных элементов массива. Скорее всего, в v6.7 эта функция будет доступна.
     
     
     
    efaden
    Guest
    #13
    0
    15.11.2013 14:14:00
    Как насчет атомарных операций?.. Сейчас, если несколько потоков пытаются получить доступ к одному списку (например, при использовании Traffic Monitors и т.п.)… могу ли я быть уверен, что операции push/pop не приведут к потере записей? -Эрик
     
     
     
    boen_robot
    Guest
    #14
    0
    15.11.2013 15:21:00
    Лично я предпочёл бы именованные блокировки вместо какой-то атомарности. Например: :lock "nameOfMyLock" do={ Всё, что должно быть атомарным в отношении "nameOfMyLock". То есть, любой другой код с ":lock" и "nameOfMyLock" заблокируется в этой точке до тех пор, пока этот раздел не будет завершён. :set "globalVariableCounter" ($globalVariableCounter + 1) } В идеале, должна быть и опция для общих блокировок и таймаут… но даже с просто эксклюзивными, бесконечными блокировками большинство скриптов будут в порядке.
     
     
     
    mrz
    Guest
    #15
    0
    04.02.2014 14:33:00
    Теперь установка значения для отдельного элемента массива тоже работает [admin@MikroTik] > :global rr { "apple"=12345; "peach"="abe" } [admin@MikroTik] > :set ($rr->“apple”) "lala" [admin@MikroTik] > :environment print rr={apple="lala"; peach="abe"}
     
     
     
    efaden
    Guest
    #16
    0
    04.02.2014 14:43:00
    Как насчет какого-нибудь мьютекса/лока/семафора?
     
     
     
    lukkes
    Guest
    #17
    0
    04.03.2014 03:42:00
    Привет, есть ли способ присвоить значения переменной массиву в ROS 5.21? Как-то так: {a=1;b=3}. Спасибо;
     
     
     
    mrz
    Guest
    #18
    0
    04.03.2014 11:58:00
    Нет, в версии 5.x это не работает.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры