我正在使用 Dyalog 的“行数组”模式读取文件⎕nget
:
lines _ _ ← ⎕nget '/usr/share/dict/words' 1
它似乎有效:
lines[1]
10th
但是各个元素似乎不是字符数组:
line ← lines[1]
line
10th
≢ line
1
⍴ line
在这里,我们看到第一行的计数为 1,形状为空数组。我无法进一步索引它;lines[1][1]
或者line[1]
是排名错误。如果我在 RHS 上使用 ⊂,我可以一次将值分配给多个变量,并为每个变量获得相同的行为。但是,如果我在没有左鞋的情况下进行多项作业,我会得到:
word rest ← line
word
10th
≢ word
4
⍴ word
4
最后我们得到了我期望的字符数组!然而,它显然没有与隐藏在其中的任何其他东西分开line
;另一个变量是相同的:
rest
10th
≢ rest
4
⍴ rest
4
word ≡ rest
1
值得注意的是,当我查看它时,word
它没有前导空格,不像line
. 因此,似乎返回的内容矩阵中的各个数组元素⎕nget
被进一步包裹在一些没有出现在形状或计数中的东西中,并且不能被索引,但是当我使用解构赋值时,它会解开它们。感觉很像 Common Lisp 中的多值内容。
如果有人可以解释这里发生了什么,我将不胜感激。我觉得我错过了一些非常基本的东西。