Adá*_*dám 3 syntax-error variable-assignment apl dyalog assign
当我尝试在 Dyalog APL 中分配名称时,收到以下错误消息之一:
SYNTAX ERROR: Can't change nameclass on assignmentSYNTAX ERROR: Invalid modified assignment, or an attempt was made to change nameclass on assignment“在分配时更改名称类”到底意味着什么,为什么不允许这样做,以及如何解决这个问题?
APL 区分句法角色,每个角色都由一个数字标识。该\xe2\x8e\x95NC函数采用一个或多个名称,并返回它们的名称类,例如 2 表示变量,3 表示函数,4 表示运算符,9 表示引用。
根据作业文档:
\n\n\n重新分配
\n如果分配不会改变其名称类别,或者将其从 2 更改为 9,则可以为已存在的名称分配新值,反之亦然。允许重新分配的表如下:
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
参考号 多变的 功能 操作员 参考号 是的 是的 多变的 是的 是的 功能 是的 是的 操作员 是的 是的
当执行扩展赋值或使用赋值的值时(赋值箭头右侧的内容将作为结果返回),为了消除歧义,必须禁止某些重新赋值。例如:
\n Plus\xe2\x86\x90+\n a\xe2\x86\x90100\n a Plus\xe2\x86\x9010\n a\n110\n Double\xe2\x86\x90{2\xc3\x97\xe2\x8d\xb5}\n Double b\xe2\x86\x9010\n20\nRun Code Online (Sandbox Code Playgroud)\n如果没有这个限制,就不可能将这些情况与并行分配区分开来分开来:
\n c d\xe2\x86\x9010\n c\n10\n d\n10\nRun Code Online (Sandbox Code Playgroud)\n在生产代码中重复使用完全不同的名称可能是一个坏主意,建议采用严格的命名约定(例如我的)。然而,当在交互式会话 (REPL) 中进行试验时,只需删除现有名称的定义,即可将其用于所有目的。(删除)系统功能\xe2\x8e\x95EX和)ERASE命令都执行此操作:
a\xe2\x86\x9010\n a\xe2\x86\x90+\nSYNTAX ERROR: Can\'t change nameclass on assignment\n a\xe2\x86\x90+\n \xe2\x88\xa7\n \xe2\x8e\x95EX\'a\'\n a\xe2\x86\x90+\n a\xe2\x86\x9010\nSYNTAX ERROR: Invalid modified assignment, or an attempt was made to change nameclass on assignment\n a\xe2\x86\x9010\n \xe2\x88\xa7\n )erase a\n a\xe2\x86\x9010\nRun Code Online (Sandbox Code Playgroud)\n