考虑以下函数,它应该返回一个将两个添加到任何给定参数的函数:
∇r←addtwo
r←{⍵+2}
∇
这段代码加载没有任何错误,但我不能使用返回值而不导致错误。
addtwo ⍝ doesn't cause errors
addtwo 1
VALUE ERROR
addtwo 1
^
x←addtwo
VALUE ERROR
x←addtwo
^
我正在使用GNU-APL 1.8
.
您打算做的通常的解决方法是从函数返回一个字符串并执行(⍎)该字符串:
∇Z←FOO
[1] ⍝ return a string that can be ⍎'ed····
[2] Z←'{⍵+2}'
[3] ∇
⍎FOO,⍕42
44
我相信Dyalog APL是唯一允许这样做的实现。在线尝试!
尽管这可行,但这不是 APL 做事的正常方式。您可能想考虑编写自己的运算符。