gpt4 book ai didi

wolfram-mathematica - 在 Mathematica 中测试 Null 和非 Null

转载 作者:行者123 更新时间:2023-12-04 00:48:16 24 4
gpt4 key购买 nike

在 Mathematica 中测试值是否为 Null 的最佳/最干净/可取的方法是什么?并且不为空?

例如:

 a = Null
b = 0;
f[n_] := If[n == Null, 1, 2]
f[a]
f[b]

结果是:
 1
If[0 == Null, 1, 2]

我原以为 f[b] 为 2。

最佳答案

正如丹尼尔指出的(并在列昂尼德的书中解释)Null == 0不计算为 TrueFalse ,所以 If声明(如书面)也不评估。Null是特价Symbol它不会显示在输出中,但在所有其他方面就像一个正常的日常符号。

In[1]:= Head[Null]
Out[1]= Symbol

对于一些 undefined symbol x ,你不要 x == 0返回 False , 自 x以后可能为零。这就是为什么 Null == 0也不评价。

有两种可能的修复方法:

1) 使用 TrueQ 强制测试进行评估或 SameQ .
对于 n == Null测试,以下将等效,但在测试数字对象时,它们不会。 (这是因为 Equal 使用数值等效的近似检验。)
f[n_] := If[TrueQ[n == Null], 1, 2]   (* TrueQ *)
f[n_] := If[n === Null, 1, 2] (* SameQ *)

使用上述内容,条件语句可以按您的意愿工作:
In[3]:= {f[Null], f[0]}
Out[3]= {1, 2}

2) 使用 If 的可选第四个参数如果测试仍未评估(即如果它既不是 True 也不是 False ),则返回
g[n_] := If[n == Null, 1, 2, 3]

然后
In[5]:= {g[Null], g[0]}
Out[5]= {1, 3}

关于wolfram-mathematica - 在 Mathematica 中测试 Null 和非 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6510289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com