我正在学习here中的APL。
为什么会出现此语法错误?
'computer' [ 1 2 3 ] ← 'COM'
SYNTAX ERROR
'computer'[1 2 3]←'COM'
^
但是,如果我将'computer'
保存在变量中,则不会收到错误消息:
T ← 'computer'
T
computer
T[1 2 3] ← 'COM'
T
COMputer
我在做什么错了?
答案 0 :(得分:3)
'computer'
是一个常量,您不能更改常量本身的值,只能更改变量的当前值。
考虑一下:如果您可以分配给'computer'
,那么下次写'computer'
时,您期望结果为COMputer
吗? 2←3
怎么样?显然,这没有任何意义。
但是,您可以使用相对较新的@
“ at”运算符(不包含在 Mastering Dyalog APL中)修改值而不将其分配给名称。 ,但the documentation is available online)。
'COM'@1 2 3⊢'computer'
COMputer
您可以在在“计算机”一词的索引1 2 3上输入字母'COM'来阅读。 ⊢
在这里仅用于将1 2 3
与'computer
分开,因此@
很清楚什么是索引,什么是要修改的数组。
答案 1 :(得分:2)
该括号符号专门用于修改变量。 Number of errors: 9 ([X, M, S, K, B, Q, L, I, U])
的返回值为Number of errors: 9 (XMSKBQLIU)
,因此,如果表达式不修改变量,它将毫无意义(或几乎与T[1 2 3] ← 'COM'
相同)。
要获取修改后的数组而不是修改变量,请使用运算符@
:
'COM'