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