尝试使用索引修改字符串时出现语法错误
Syntax error when attempting to amend a string with indexing
我正在学习 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
我做错了什么?
那个括号符号是专门用来修饰变量的。 T[1 2 3] ← 'COM'
的 return 值为 'COM'
,因此如果表达式没有修改变量,它将毫无意义(或者,几乎与 ⊢
相同)。
要获取修改后的数组,而不是修改变量,请使用运算符 @
:
('COM'@1 2 3) 'computer'
'computer'
是常量,不能改变常量本身的值,只能改变变量的当前值。
想一想:如果你可以赋值给'computer'
,那么下次你写'computer'
时,你会期望结果是COMputer
吗? 2←3
怎么样?显然,这没有任何意义。
但是,您 可以 修改值而无需将其分配给名称,使用相对较新的 @
"at" 运算符(不包括在内)在 Mastering Dyalog APL 中,但 the documentation is available online).
'COM'@1 2 3⊢'computer'
COMputer
您可以将此解读为 将字母 'COM' 放在 索引 1 2 3 的单词 'computer'.这里的⊢
只是用来把1 2 3
和'computer
分开的,所以很清楚@
什么是索引,什么是要修改的数组。
我正在学习 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
我做错了什么?
那个括号符号是专门用来修饰变量的。 T[1 2 3] ← 'COM'
的 return 值为 'COM'
,因此如果表达式没有修改变量,它将毫无意义(或者,几乎与 ⊢
相同)。
要获取修改后的数组,而不是修改变量,请使用运算符 @
:
('COM'@1 2 3) 'computer'
'computer'
是常量,不能改变常量本身的值,只能改变变量的当前值。
想一想:如果你可以赋值给'computer'
,那么下次你写'computer'
时,你会期望结果是COMputer
吗? 2←3
怎么样?显然,这没有任何意义。
但是,您 可以 修改值而无需将其分配给名称,使用相对较新的 @
"at" 运算符(不包括在内)在 Mastering Dyalog APL 中,但 the documentation is available online).
'COM'@1 2 3⊢'computer'
COMputer
您可以将此解读为 将字母 'COM' 放在 索引 1 2 3 的单词 'computer'.这里的⊢
只是用来把1 2 3
和'computer
分开的,所以很清楚@
什么是索引,什么是要修改的数组。