尝试使用索引修改字符串时出现语法错误



我从这里学习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'

在线试用!

最新更新