Есть ли способ быстро инициализировать массив последовательностью значений в Аде?

Например, если я хочу инициализировать массив элементов следующим образом:

someArray : array(1..10) of Integer := (2,4,6,8,10,12,14,16,18,20);

Есть ли короткий способ или какой-то механизм, чтобы сделать это быстрее?

Например, в Matlab и python есть функция linspace, которая возвращает последовательность чисел, расположенных через равные промежутки. Есть ли аналогичная функциональность для Ады, которая работает для любого типа массива любой длины?

Я могу создать общую функцию для этого, но это потребует отдельной инициализации для каждого отдельного типа массива, и это кажется немного громоздким для функции, которая по существу будет использоваться один раз для каждого типа массива.

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

Andreas 22.01.2023 22:21
echo {2..20..2} | sed "s/ /,/g", скопируйте и вставьте вывод
Andreas 22.01.2023 22:47
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
91
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ада 2022 (например, GCC 12 с -gnat2022) позволяет

package Aggregates is

   type A is array (Integer range <>) of Integer;

   V : A := (for J in 1 .. 10 => J * 2);

end Aggregates;

См. также Ассоциация повторяющихся компонентов.

trashgod 22.01.2023 23:03

Я хотел бы указать, что, когда в документе по этой ссылке говорится, что использование агрегатов массива с круглыми скобками устарело, это позиция AdaCore, не оправданная ARM (т. Е. Это не в Приложении J). Это очень раздражает всех, кто пытается разрабатывать для людей, которые не могут использовать последний компилятор (/rant).

Simon Wright 22.01.2023 23:38

Приятно, что эта функция наконец-то появилась! Немного разочаровывает, что для такой базовой (на мой взгляд) функции потребовалось так много времени...

Adi 23.01.2023 14:45

Другие вопросы по теме