Что изменится в типе данных этой переменной APL с этими строками кода? - PullRequest
1 голос
/ 21 января 2020

Я пишу текстовый файл из APL. У меня есть матрица символов, определенная как UMMB в моем сценарии APL, который используется для тела этого текстового файла. Я могу успешно вызвать мою функцию записи документа .txt, используя эту переменную в качестве тела.

Однако, когда я делаю следующее:

k←⊂⍕UMMB
m←⊂'<html><body><table>'
n←⊂'</html></body></table>'
k←m,k,n

И я использую переменную k в качестве моего тело вместо UMMB, я получаю ошибку каждый раз, когда эта функция запускается. Я также попытался заключить k в конец всех строк выше, но безрезультатно.

Чем отличается определение k от UMMB, что моей функции не нравится?

(У меня нет исходного кода или документации для этой функции - я могу вызывать ее только вслепую.)

Редактировать: Я попытался предложить Адаму использовать функцию разделения:

Но, как оказалось, программа, в которой я использую редактор APL, не распознает это как функцию разделения, а вместо этого «функцию удаления», подробно описанную здесь:

enter image description here

Я не могу найти эквивалент разделения для этой версии APL.

Ответы [ 2 ]

2 голосов
/ 21 января 2020

⍕UMMB - простая символьная матрица, но ваш окончательный k в конечном итоге будет 3-элементным вектором вектора, матрицы и вектора. Возможно, вам придется создать одну простую матрицу символов. Поскольку я не знаю, какую систему APL вы используете, вот версия, которая должна работать универсально:

k←⍕UMMB                     ⍝ simple character matrix where ⍕ may be unnecessary
m←'<html><body><table>'     ⍝ simple character vector
n←'</html></body></table>'  ⍝ simple character vector

w←(1↓⍴k)⌈(⍴m)⌈(⍴n)          ⍝ max width of k and m and n

kw←((1↑⍴k),w)↑k             ⍝ extend k to that width
mw←w↑m                      ⍝ extend m to that width
nw←w↑n                      ⍝ extend n to that width

k←mw,[⍳1]kw,[⍳1]nw          ⍝ stack the three

Примечание: Рекомендую против -использование имен переменных, так как это мешает вам вернуться назад и проверить, какое было исходное значение.

0 голосов
/ 22 января 2020

Другим подходом было бы разделить матрицу символов на вектор векторов символов, а затем присоединить две другие на любом конце. Затем вы можете использовать Disclose, чтобы превратить его обратно в матрицу символов:

k←⊂[1+⎕IO]⍕UMMB
m←⊂'<html><body><table>'
n←⊂'</table></body></html>'
k←⊃m,k,n

(я взял на себя смелость поменять местами table и body в n.)

...