![]() |
1
3
你不能。 在某种程度上,niladic函数的行为类似于数组,但它们的值只有在使用后才能确定。这也意味着它们显示了值语义而不是引用语义。还要注意,niladic函数不能是运算符的操作数,而是它们的结果将成为操作数。 绕过这两个问题的一种方法是将niladic函数包装在一个dfn中,以便它采用一个或两个伪参数,因此:
|
![]() |
2
2
APL从右向左计算表达式。只要函数的所有参数都存在,就对函数进行计算,并用计算结果替换函数及其参数。 现在考虑您的示例g_ f。如果f是单元的或双元的,则无法计算f,因为缺少其正确的参数。在解析器术语中,标记f被移动而不是减少,可以减少的第一个表达式是g_ f,它将f分配给g。 另一方面,如果f是niladic,那么f可以(因此也将)立即被评估(例如,结果z),这样赋值将是g_ z而不是g_ f。 |
![]() |
3
1
我不知道你想做什么,所以请原谅我回答了错误的问题。 对我来说,听起来你想要一个可选的正确论点。 在APL2中,我会这样做: ea'g_ f ra' 如果ra未定义,则会捕获值错误,不会发生任何情况。如果需要g的默认值,请在ea的左侧进行分配。 |