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