Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hy 为什么';0为false,但';假是真?_Hy - Fatal编程技术网

Hy 为什么';0为false,但';假是真?

Hy 为什么';0为false,但';假是真?,hy,Hy,我在玩符号,惊讶地发现: hy 0.18.0 using CPython(default) 3.7.3 on Linux => (bool '0) False => (bool 'False) True => 这是一个设计决定吗?在Hy上表示布尔值的最佳方式是什么?'0不是符号;它是一个HyInteger,继承自int,在许多方面表现得像int。特别是,它使用了int的\uuu bool\uu方法 'False确实是一个符号(HySymbol),但对符号的大多数操作,包括b

我在玩符号,惊讶地发现:

hy 0.18.0 using CPython(default) 3.7.3 on Linux
=> (bool '0)
False
=> (bool 'False)
True
=> 

这是一个设计决定吗?在Hy上表示布尔值的最佳方式是什么?

'0
不是符号;它是一个
HyInteger
,继承自
int
,在许多方面表现得像
int
。特别是,它使用了
int
\uuu bool\uu
方法

'False
确实是一个符号(
HySymbol
),但对符号的大多数操作,包括
bool
,都不会尝试对符号求值。相反,他们把它当作一根绳子。至少目前,
HySymbol
继承自
str
。因此,任何非空符号上的
bool
返回
True
。出于同样的原因,
(+'x'y)
返回字符串
“xy”
,即使您已将变量
x
y
设置为数字。如果要布尔化由符号表示的变量的值,而不是符号本身,请说
(bool(eval'False))
。(令人困惑的是,Hy有一个名为
eval
的核心函数,它不同于Python的
eval
。将来,您可能会将其称为
Hy.eval
,而不是自动导入。)

在Hy上表示布尔值的最佳方式是什么

使用普通的旧
bool
,如在Python中