APL中使用commute的选择性赋值为何出现语法错误?
为什么APL中用commute的选择性赋值会触发语法错误?
APL的选择性赋值语法对左侧表达式有严格的语法约束,只有特定结构的“数组引用形式”才能作为左值接受赋值,而使用⍨(commute)的写法不符合这一要求。
两种写法的本质区别
合法的选择性赋值:
d←'bob' (1 0 0/d)←'B' d这里的
(1 0 0/d)是APL语法专门支持的选择器-数组结构,它直接表示“从数组d中选取对应位置元素的引用”,赋值操作会直接修改原数组d的对应位置。触发语法错误的写法:
d←'bob' (d/⍨1 0 0)←'B'(d/⍨1 0 0)本质是通过⍨反转/的参数顺序形成的函数调用表达式,它的结果是一个临时计算出的子数组,而非指向原数组d元素的引用。APL不允许将函数调用的结果作为左值进行赋值,因此触发语法错误。
内容的提问来源于stack exchange,提问作者justin2004
相关产品推荐
相关产品推荐

