给定下列变量:
x: (5 xbar `minute$.z.T);
y: (1 xbar `minute$.z.T);
这个 if
条件被正确评估。if[x=y;...];
然而,令我困惑的是,这将是 不 正确评估,并抛出一个 nyi
: if[x<>y;...]
运行时 x=y
和 x<>y
单独 if
条件下),它们评价为 0b
或 1b
.
为什么 <>
导致 nyi
当用 if
条件?
我不确定你的代码有什么问题。我刚刚启动了一个新的q会话,并用一个简单的if表达式填入了你描述的所有内容。
x: (5 xbar `minute$.z.T);
y: (1 xbar `minute$.z.T);
if[x<>y; show 123]
x是17: 05,y是17: 07,所以上述表达式评估为真,并在控制台打印123。也许问题实际上是你想要评估的表达式中的一些错误,而不是条件本身?
正如另一个答案所建议的那样,x<>y并不是导致nyi错误的原因,你需要检查的是你的if语句内的逻辑。如果它在if语句外工作,就会在if语句内工作。
你认为x=y在if语句内工作,但x<>y不工作,原因是你的x和y不相等,所以if语句只在x<>y的情况下执行。当你测试x=y时,进一步的语句将不会在if语句内运行,因此你不会看到nyi错误。
如果你分享代码的其余部分,我们可以帮助你解决这个问题,一个nyi错误的例子是使用冒号来实现返回功能,当不在一个函数内部时,例如。
if[x=y;:5] /no error thrown as :5 is not executed
if[x<>y;:5] / throws nyi as x<>y, and :5 is not implemented outside of lambdas