我从这里学习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
我做错了什么?
'computer'
是一个常量,你不能改变常量本身的值,只能改变变量的当前值。
想一想:如果你可以分配给'computer'
,那么下次你写'computer'
时,你会期望结果是COMputer
吗?2←3
怎么样?显然,这没有任何意义。
但是,您可以使用相对较新的@
"at"运算符修改值而不将其分配给名称(它不包含在掌握 Dyalog APL中,但文档可在线获得(。
'COM'@1 2 3⊢'computer'
COMputer
您可以将其理解为将字母"COM">放在单词"计算机"的索引 1 2 3 处。此处的⊢
仅用于将1 2 3
与'computer
分开,因此可以清楚地@
索引的构成以及要修改的数组。
在 TryAPL 上运行它!
该括号表示法专门用于修改变量。T[1 2 3] ← 'COM'
的返回值是'COM'
,所以如果表达式没有修改变量,它将毫无意义(或者,几乎与⊢
相同(。
要获取修改后的数组,而不是修改变量,请使用运算符@
:
('COM'@1 2 3) 'computer'
在线试用!