这些代码行对这个 APL 变量的数据类型有什么改变?

What changes about the data type of this APL variable with these lines of code?

我正在从 APL 写一个文本文件。 我的 APL 脚本中有一个定义为 UMMB 的字符矩阵,它用于此文本文件的正文。 我能够使用此变量作为正文成功调用我的 .txt 文档编写函数。

然而,当我执行以下操作时:

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

并且我使用变量 k 作为主体而不是 UMMB,每次运行此函数时都会出错。我也尝试在上面所有行的末尾包含 k,但无济于事。

与我的函数不喜欢的 UMMB 相比,k 的定义有何不同?

(我没有这个函数的源代码和文档,只能瞎调用。)

编辑:我尝试了 Adam 关于使用 split 函数的建议:

但事实证明,我在其中使用 APL 编辑器的程序无法将此识别为拆分功能,而是 'drop function,' 此处详述:

我似乎无法找到此版本 APL 的 split 等价物。

⍕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

旁注: 我建议不要重复使用变量名,因为它会阻止您返回并检查原始值是什么。

另一种方法是将字符矩阵拆分为一个字符向量向量,然后将另外两个附加到两端。然后就可以用Disclose把它变回字符矩阵了:

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

(我冒昧地将tablebody换成了n。)