问题标签 [truthiness]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 布尔、等价和对象标识符的神秘案例
字符串的第一个奥秘:
为什么会bool('foo')
返回True
?
如果
'foo' == True
返回False
'foo' == False
返回False
'foo' is True
返回False
'foo' is False
返回False
整数之二:
怎么会bool(5)
返回True
?
如果
5 == True
返回False
5 == False
返回False
5 is True
返回False
5 is False
返回False
第三个零之谜:
怎么回来bool(0)
了False
?
如果
0 == True
返回False
0 == False
返回True
<--特殊情况
0 is True
返回False
0 is False
返回False
我知道 Python 的一些真实性,然而,这一切似乎有点神秘。有人介意对此有所了解吗?
c - Do-while 循环不遵守真值分配 (C)
我的 C 项目是一个 Windows 控制台应用程序,它从用户的音乐项目中获取拍号和 BPM,并以秒为单位返回小节的长度。
我正在尝试使用 do-while 循环来添加“继续/退出?” 在每次成功计算结束时提示这里是该函数的源代码。它根据用户输入执行一项计算,然后终止。
每次计算成功后,我想提示用户选择“y”返回初始输入提示或“n”结束程序并退出命令提示。稍后的更新包括一个 do-while 循环,旨在添加该功能。
当我编译时,没有错误,但是当我运行它时,程序在任何输入后循环。为什么代码忽略了我的真实分配?我能做些什么来解决这个问题?
javascript - 为什么javascript中的“假”真实?
我知道空字符串在 javascript 中是虚假的,而非空字符串在 javascript 中是真实的。
但是,为什么'false'
在 javascript 中是真的,规范中有什么明确的吗?是性能问题还是存在您希望字符串'false'
表示的情况true
?
python - 为什么直接调用 bool() ?
我读过,当 python 评估条件时,类似的东西if x:
会被翻译成if bool(x):
. 那为什么我会看到很多bool()
直接调用的代码呢?这主要是为了可读性还是有其他优势?
python - Python Regex - 在单词中查找字符串模式
对于以下示例,我在 python 中得到误报。我正在尝试查找字符串中是否存在关键字。问题是字符串中的单词通常由下划线或连字符连接,所以我只希望在关键字不存在时出现肯定的结果。它可以被连字符、下划线或任何不是字母的东西包围,被认为是真实的结果。通常它应该被下划线或连字符包围。它也不区分大小写。
结果应该输出这个 True/False 列表
执行:
结果:
在python中有没有更好的方法来做到这一点?
如果不是,我将如何在 python 中使用正则表达式来做到这一点?
请记住,这是在性能确实很重要的大型数据集上循环的。
javascript - 在javascript中是-1真还是假?
当我使用 indexOf 时,我无法确定 -1 在 javascript 中是真还是假。
为什么最后两行给出真/假?
据我了解,只有 == 允许类型转换,因为(=== 是严格的)
(!a) 和 (!b) 在内部某处使用 (==) 吗?
python - 如何在返回语句中将字符串评估为布尔值?
我在 Python 3.4 中有这样的函数:
当然还有其他的写法,比如return the_str != ""
. 有没有更多的 Pythonic 方式来编写这个表达式?我熟悉真/假的概念,所以我知道我可以在 if 条件下简化它:
但是在它的表达式中if
期望一个布尔结果(这是我作为一个 C++ 程序员的天真的过度简化;我不熟悉这个标准)。但是,没有任何东西可以强制表达式在 return 语句中计算为布尔值。我试过只返回字符串,只要没有人将返回的值视为字符串,它在布尔上下文下调用代码就可以正常工作。但从后置条件的角度来看,我不想返回非布尔类型。
ruby-on-rails - 为什么对枚举值的真实检查不能像我预期的那样工作?
在我的membership
模型上,我有以下枚举值:
然后在一些代码的其他地方,当涉及到membership
模型时,我有这个if-branch
奇怪的是对于membership.user?
返回的属性,执行仍然在块false
内传递。if
这是一个pry
会话的示例。
所以从membership
上面的对象,你可以看到membership.relative_type
等于0
,对应于member
。所以这就像你所期望的那样工作,特别是在membership.member?
返回 true 的情况下。
我不明白的是....在这个当前实例中,为什么这个 PRY 实例是从if
块内执行的,只有在为真时才应该执行membership.user?
......但这里显然是错误的。
编辑 1
奇怪的是,我将方法编辑得更明确,如下所示:
if membership.user? == true
但它仍然将执行发送到if-block
即使membership.user?
是假的。
编辑 2
我什至更进一步,比较了枚举的实际值,如下所示:
但仍然没有骰子。
groovy - Groovy null 检查不适用于列表中的属性
POJO:
我的数据:
List<Item> items = new ArrayList(new Item(prop1: 'something'), new Item(prop1: 'something'))
然后我尝试:
即使项目列表中的两个项目的 prop2 为空,上面的代码也会返回 true 并进入 if 语句。
有人能告诉我为什么吗?