APL Dyalog Преобразования вложенных элементов массива

Я использовал Dyalog APL для назначения класса, и я столкнулся с проблемой при преобразовании каждого элемента вложенного массива.

У меня есть массив символов с именем HOLD, который содержит переменное количество массивов длиной 7 символов. Используя преобразование разбиения, я могу превратить его во вложенный массив только для чтения вложенных массивов, однако мне нужно, чтобы они были символьными векторами.

Я могу индивидуально изменить элемент в символьный вектор с помощью оператора MIX,

TEST←↑HOLD[1]  ⍝Test will be a character vector

но я не могу сделать это для каждого элемента одновременно.

Моя лучшая попытка выглядит

TEST←↑¨HOLD ⍝Test will be a nested array, seemingly identical to hold

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

1 ответ

То, что вы ищете, это "enlist" -примитив. Это требует ⎕ML быть>0, поэтому я назначаю его в dfn (чтобы оставить область видимости локальной): TEST←{⎕ML←1 ⋄ ∊⍵}HOLD

Если ваш ⎕ML уже>0 (см. Строку состояния), вы можете просто сделать: TEST←∊HOLD

Попробуйте онлайн!

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