Сколько измерений будет у следующего массива
Перейти к содержимому

Сколько измерений будет у следующего массива

  • автор:

 

Name already in use

JavaExercises / TestTasks / geekbrains.ru / java1e.test

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

VBA Excel. Количество измерений массива

Функция KolichestvoIzmereniy с помощью бесконечного цикла вычисляет наибольшее значение каждого текущего индекса массива по порядку. Когда значение переменной i превысит количество доступных индексов, будет сгенерирована ошибка. Управление выполнением кода будет передано инструкции, следующей за меткой Instr, которая выведет результат вычисления.

Длинное название функции определения количества измерений массива в коде VBA Excel дано для наглядности. Вы можете переименовать ее более коротким именем или оставить как есть.

Пример использования функции

Если переменную массива объявить с пустыми скобками или без скобок, как обычную переменную, то функция KolichestvoIzmereniy вернет значение 0.

2 комментария для “VBA Excel. Количество измерений массива”

Оператор GoTo — это зло!

разберись с тем что он делает
вообще это выход из функции при возникновении ошибки к метке

Как определить количество измерений массива?

У меня есть метод, который использует транспонирование, но я не хочу применять эту операцию, если массив имеет менее 2 измерений. Мне интересно, как я могу сделать это в рубине.

Любая помощь оценивается,

Что делать, если количество измерений несовместимо? — Andrew Grimm

6 ответы

Вы можете найти его рекурсивно:

Я знаю, что это немного сыровато, и, возможно, есть кто-то, кто может сделать это намного лучше, но общая идея ясна.

ответ дан 09 авг.

Поскольку массивы Ruby могут содержать все, что угодно, это хрупко и в лучшем случае является хаком, но вы всегда можете просто проверить, не энный элемент представляет собой массив, т.е.

Мне это действительно не нравится, поэтому, если есть что-то лучше, просто шлепните меня или понизьте голос до забвения.

ответ дан 09 авг.

Хм, я мог бы просто попробовать #transpose и rescue IndexError, TypeError , но есть еще идея:

 

ответ дан 09 авг.

ответ дан 09 авг.

Предполагается, что вы используете обычные рубиновые массивы, а не Matrix э. Вероятно, у вас возникнут более серьезные проблемы с моделью данных, если массивы не являются регулярными, поэтому одной из этих двух методологий, вероятно, будет достаточно.

ответ дан 09 авг.

Не бойтесь ошибок, просто предвосхищайте их:

ответ дан 09 авг.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками ruby or задайте свой вопрос.

Можно ли подсчитать количество измерений в массиве?

Этот код проходит через кучу каталогов для создания массивного многомерного массива.

По мере создания массива, я хочу знать, насколько глубоко в массиве я.

В приведенном выше примере корневой каталог находится на уровне 1. Все одиночные прописные буквы находятся на уровне 2. Все прописные буквы с номером находятся на уровне 3. Все заглавные буквы с номером и строчной буквой находятся на уровне 4.

Как я строю массив, есть ли способ узнать, на каком уровне я нахожусь? Массив создается с помощью рекурсивной функции.

Это может быть касательно вашего вопроса о массиве, но вы можете убить двух зайцев одним камнем, используя рекурсивный итератор каталогов.

Что бы вывести что-то вроде:

Как вы можете видеть, RecursiveIteratorIterator::getDepth() используется для получения текущей глубины рекурсивного итератора, что и является причиной предлагаемого подхода.

Альтернатива (если вы должны использовать массив)

Предполагая, что структура вашего массива выглядит примерно так:

Тогда можно использовать очень похожий подход к получению значений из рекурсивного итератора каталогов (но на этот раз с рекурсивным итератором массива). Быстрый цикл над «родительскими» массивами может дать нам «путь» от текущего элемента до корня.

Результат будет таким же, как и предыдущим для итератора каталогов.

TL; DR Мы можем использовать рекурсивные итераторы из Итераторы SPL, чтобы работать с рекурсивными/глубокими структурами намного проще.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *