我在玩符号,很惊讶地看到:
hy 0.18.0 using CPython(default) 3.7.3 on Linux
=> (bool '0)
False
=> (bool 'False)
True
=>
这是一个设计决定吗?在 Hy 上表示布尔值的最佳方式是什么?
我在玩符号,很惊讶地看到:
hy 0.18.0 using CPython(default) 3.7.3 on Linux
=> (bool '0)
False
=> (bool 'False)
True
=>
这是一个设计决定吗?在 Hy 上表示布尔值的最佳方式是什么?
'0
不是符号;它是 a HyInteger
,它继承自a 并在许多方面int
表现得像 a 。int
特别是,它使用int
'__bool__
方法。
'False
确实是一个符号 ( HySymbol
),但对符号的大多数操作,包括bool
,都不会尝试评估该符号。相反,他们将其视为字符串。至少目前,HySymbol
继承自str
. 因此,bool
在任何非空符号上返回True
。出于同样的原因,即使您已将变量和设置为数字,也会(+ 'x 'y)
返回字符串。如果您想布尔化由符号表示的变量的值,而不是符号本身,例如. (令人困惑的是,Hy 有一个名为与 Python 不同的核心函数。将来,您可能会期望调用它而不是自动导入它。)"xy"
x
y
(bool (eval 'False))
eval
eval
hy.eval
在 Hy 上表示布尔值的最佳方式是什么?
用一个普通的 old bool
,就像在 Python 中一样。