问题标签 [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.
perl - 双变量的真实性总是它的字符串部分吗?
我的 Perl 5.26.2 x64 (Cygwin) 的经验行为是,当且仅当其字符串部分为真时,对偶变量为真:
自 2009 年以来就是这种情况。
问题:这是有保证的行为吗?
Boolean::String
说这是行为。但是,就向后兼容性而言,我不知道这是否是我可以依赖的。我也没有在perlsyn、Scalar::Util
或中看到明确的声明perldata#Context
。我确实看到以下内容
perldata#Scalar-values
:如果标量值未定义、空字符串或数字 0(或其等效字符串“0”),则标量值在布尔意义上被解释为 FALSE,如果是其他值,则被解释为 TRUE。布尔上下文只是一种特殊的标量上下文,不会执行到字符串或数字的转换。
不幸的是,“从未执行任何转换......”的声明并没有告诉我解释器正在查看的 dualvar 的哪个部分!
同样,查斯。欧文斯的相关回答说
真实性测试首先查看字符串
但是,如果它首先查看字符串,那么它会查看什么,以及何时查看?
编辑我的理解是,如果overload
在变量上定义,dualvar 与否,bool
重载将控制。我想知道非重载案例。
Edit 2 ikegami's answer here指出了这一点,PL_sv_yes
并且PL_sv_no
还有一个NV
( double
) 组件。对于奖励积分:),如果双变量有 NV 对真实性有任何影响吗?(让我知道这个答案是否真的涉及到足以值得一个单独的问题。)
syntax - 在哪些语言中,字符串并不总是真实的?
是否有任何(其他)编程语言字符串“假”不是真值?
这是一个非常普遍的问题,但并不像您想象的那么容易在一个地方找到答案
python - 为什么在 Python 3 中 NotImplemented 是真实的?
这个问题是由对这个问题的回答和讨论引发的。以下片段显示了问题的症结所在:
我的问题如下:
- 为什么决定 的
bool
值NotImplemented
应该是True
?感觉很不合时宜。 - 我不知道有什么好的理由吗?文档似乎只是说,“因为它是”。
- 有没有以合理的方式使用它的例子?
推理为什么我认为它不直观(请忽略缺乏最佳实践):
具有如此负面含义(缺乏实施)的事物被认为是真实的,这似乎是一种奇怪的行为。
相关文字来自:
未实现
__eq__()
二进制特殊方法(例如,__lt__()
,__add__()
,等)应返回的特殊值,__rsub__()
表示该操作未针对其他类型实现;可以由就地二进制特殊方法(例如 , 等)返回__imul__()
以__iand__()
用于相同目的。它的真值是真的。— 来自Python 文档
编辑 1
为了澄清我的立场,我觉得NotImplemented
能够评估为布尔值本身就是一种反模式。我觉得 Exception 更有意义,但普遍的想法是在评估不同对象之间的比较时出于性能原因选择常量单例。我想我正在寻找令人信服的理由来说明为什么这是选择的“方式”。
python - Python OR 用于列表
在Python中你可以做
这将打印
你可以对列表做同样的事情吗?即是否有 Python 函数foo
以便以下内容也将打印hello
?
注意bar
不打印。
python - 任何人都知道为什么我得到一个“进程以退出代码 0 完成”吗?
我正在尝试运行这个程序,但由于某种原因,每当我输入 0 时,程序就会停止运行。我希望“您猜得太低,请再试一次”,因为输入小于生成的随机数。谁能帮忙解释一下?另外,请随时批评我的代码,以便我可以做得更好。非常感激。
bash - Bash:删除括号内所有出现的 -n 是否安全?
我最近在我的 bash 脚本中发现了这个“错误”;
我的意思是检查是否$var
为非空,即[ -n "$var" ]
. 碰巧的是,如果没有-n
. 同样,我发现我可以替换[ -z "$var" ]
为[ ! "$var" ]
.
我倾向于喜欢这种基于其他语言中变量的(非)空性的隐含虚假性(真实性),因此我也可能在 bash 中采用这种模式。这样做是否有任何危险,即两组语法不等价的边缘情况?
javascript - 有没有办法澄清这个JS中的真假陈述?
我一直在努力学习 JS,但我似乎无法弄清楚为什么我的布尔值总是返回真或总是假。
所以我相信我了解 JS 中真假情况的基础知识,但我似乎无法正确理解。我知道存在数据类型问题,(不能让不同的数据类型做不同的事情)。
或者
定义一个lastCharacter
接受两个字符串作为参数的函数。
lastCharacter
如果两个字符串都以相同的字符结尾,则应返回 true。否则,lastCharacter
应该返回 false。
他们要么总是返回真,要么总是假。谁能帮我?
python - 非 compsci 背景的 Python if 语句和真值测试
经过几个小时的挖掘,这旨在成为一个自我回答的问题,我发现这个思考过程可能对其他可能没有正式 Compsci 背景的人有用。
这一切都始于对为什么要输入一个特定的 if 语句的困惑。
为什么要输入这个 if 语句?
javascript - 如何运行 logTruthiness 函数
下面给出的这段代码应该评估一个值是否强制为真或假。这是如何运作的?例如,如果我想知道一个字符串“我的字符串”是否会被强制为真或假,我该如何使用来确定呢?
我试图用“我的字符串”替换下面代码中的 val 出现 val
错误函数 logTruthiness ("my string") { SyntaxError: Unexpected string
java - 在 Java 中评估真实性
我正在用 Java 编写一个交互式控制台应用程序。我需要使用布尔响应向用户提问,但是,Scanner.in.nextBoolean() 相当脆弱,因为它会在输入不正确时引发异常,因此将其包装在一个方法中似乎是个好主意。我可以只使用 try/catch 块并坚持让用户输入“true”或“false”来回答和捕捉错别字。但后来我想我可以使用 Scanner.in.next() 或 Scanner.in.nextLine() 并使用类似 parseBoolean(String s) 的方法评估返回的字符串的真实性。
有没有办法评估字符串的“真实性”超出真/假?也就是说,“0”/“1”“是”/“否”也将评估为真/假。