可以使用
为变量 G 分配非尼拉度函数 FG ← F
但是,如果 F 是尼拉地语,如何防止其被评估?
答案 0 :(得分:3)
你不能。
从某种意义上讲,尼拉迪奇函数的行为类似于数组,只是它们的值直到使用完才确定。这也意味着它们表现出值语义而不是引用语义。还要注意,尼拉第函数不能是运算符的操作数,而是它们的结果将成为操作数。
规避这两个问题的一种方法是将niladic函数包装在dfn中,以便它接受一个或多个伪参数,因此:
G←{F}
答案 1 :(得分:2)
APL从右到左评估表达式。一旦存在函数的所有参数,就对函数求值,并用求值结果替换函数及其参数。
现在考虑您的示例G←F。如果F是单声道或双声道,则F不能求值,因为缺少正确的参数。用解析器术语来说,令牌F是移动而不是减少的。因此,可以减少的第一个表达式是G←F,它将F分配给G。
另一方面,如果F是尼拉第语,则可以(因此将)立即对F进行求值(例如,结果Z),这样赋值的对象将是G←Z而不是G←F。 / p>
答案 2 :(得分:1)
我不确定您要做什么,因此请原谅我回答错误的问题。
在我看来,您需要一个可选的正确参数。 在APL2中,我将执行以下操作:
''⎕EA'G←F ra'
如果ra未定义,则将捕获“值错误”,并且不会发生任何事情。如果您想要G的默认值,请在EA的左侧进行分配。