可能重复:
什么是!! JavaScript中的运算符?
什么是不是在JavaScript中我已经看过几次:)
function foo(){
return !!(window.history);
}
Run Code Online (Sandbox Code Playgroud) 在这个答案中,我看到了语法<=>; 这是什么意思?它似乎是基于上下文的某种比较,但这就是我所能收集到的.部分背景:
sub rev_by_date { $b->[9] <=> $a->[9] }
my @sorted_files = sort rev_by_date @files;
Run Code Online (Sandbox Code Playgroud) 如果数据库行是这样的:country = 'usa'我查询"select * from data where country = 'usa '"它也返回此行.所以它不完全匹配.
为什么MySQL会这样做?而在其他情况下,当它不是真的时,它也将返回TRUE?
说我有一个表达式:
( A >= 10 && B == 20 ) || ( C < 30 ) || ( D != 50 )
Run Code Online (Sandbox Code Playgroud)
我可以建议以下JSON来存储/表示这个表达式:
{ "filter":
[
{ "var":"A", "condition":"ge", "num":10 },
{ "var":"B", "condition":"e", "num":20 }
],
[
{ "var":"C", "condition":"lt", "num":30 }
],
[
{ "var":"D", "condition":"ne", "num":50 }
]
}
Run Code Online (Sandbox Code Playgroud)
其中"filter"映射到子数组的数组.每个子阵列中的所有元素都与AND相关联,而所有子阵列都与OR相关联.
在编写像这样的JSON时,有什么我忽略的吗?
#include <compare>
#include <iostream>
int main()
{
auto comp1 = 1.1 <=> 2.2;
auto comp2 = -1 <=> 1;
std::cout << typeid(comp1).name()<<"\n"<<typeid(comp2).name();
}
Run Code Online (Sandbox Code Playgroud)
输出:
结构 std::partial_ordering
结构 std::strong_ordering
我知道如果操作数具有整数类型,则运算符将返回一个 prvalue 类型std::strong_ordering。我也知道操作数是否有浮点类型,运算符会产生类型的纯右值std::partial_ordering。
但是为什么我应该使用三向比较运算符而不是双向运算符(==, !=, <, <=, >, >=)?这对我有什么好处吗?
我正在学习和使用 Python,我想出了以下测试代码(请注意,我不会编写这样的高效代码,但在学习新语言时,我喜欢尝试该语言的极端情况):
a = None
print(None == a) # I expected True, I got True
b = 1
print(None == b) # I expected False, I got False
class MyNone:
# Called if I compare some myMyNone == somethingElse
def __eq__(self, __o: object) -> bool:
return True
c = MyNone()
print (None == c) # !!! I expected False, I got True !!!
Run Code Online (Sandbox Code Playgroud)
请参阅代码示例的最后一行。
None == something明明不存在的东西怎么会None返回True呢?我本希望得到这样的结果something == None,但不是None == …
如果没有指定对象的相等比较属性,Python在使用>和时仍然会做一些事情<.如果你没有指定__gt__或者实际比较这些对象的Python是什么__lt__?我希望这里有一个不受支持的操作数错误,就像你在尝试将两个对象一起添加而没有defing时所得到的那样__add__.
In [1]: class MyObject(object):
...: pass
...:
In [2]: class YourObject(object):
...: pass
...:
In [3]: me = MyObject()
In [4]: you = YourObject()
In [5]: me > you
Out[5]: False
In [6]: you > me
Out[6]: True
我正在为一个项目的PHP代码部分工作,该项目将YYYY-MM-DD格式的日期与当前日期进行比较,以查看它是否小于当前日期.在代码的不同点,使用两种不同的方法进行这种比较.第一个用于get_timestamp()日期并运行时间戳的比较.在另一个地方,它只是将日期的字符串与输出进行比较date("Y-m-d").我的期望是两个日期字符串的比较不会提供正确的答案.但是,当我设置几个测试用例时,我得到了预期的输出.我回顾了PHP手册的两个部分以获得洞察力,但我仍然感到困惑的是,为什么比较无需转换为时间戳.
PHP手册的比较运算符部分指出,字符串要么被转换为数字,要么进行数字比较,或者它产生称为词法比较的东西.我在词法比较中找不到任何进一步的东西,但是当我读到关于字符串转换为数字并尝试使用日期字符串的示例时,我尝试了每个日期字符串的相同数字输出.
有人可以帮助我理解为什么两个日期字符串的比较大于或小于两个日期字符串(或者至少看起来有效)?我错过了什么?
作为后续工作,如果确实有效,我假设将日期转换为时间戳并根据时间戳进行比较是一种更好的做法.哪个是用于将日期转换为时间戳的更好功能:get_timestamp()或strtotime()?
示例代码小于/大于两个YYYY-MM-DD字符串的比较:
if ("2013-06-27" < "2013-06-28") { echo "less"; } // Output: less
if ("2013-06-27" > "2013-06-28") { echo "more"; } // Output: (none)
if ("2013-06-29" < "2013-06-28") { echo "less"; } // Output: (none)
if ("2013-06-29" > "2013-06-28") { echo "more"; } // Output: more
Run Code Online (Sandbox Code Playgroud)
示例代码测试转换后的YYYY-MM-DD字符串的数值
$foo = 1 + "2013-06-27";
echo "\$foo==$foo"; // Output: $foo = 2014
$foo = 1 + "2013-06-28";
echo …Run Code Online (Sandbox Code Playgroud) 我有两个要比较的数字。以下示例中的数字是26^26在两个不同系统中计算的结果。其中之一是我的 JavaScript 代码。
然而,当比较这两个数字时,我最终得到这样的结果:
AssertionError [ERR_ASSERTION]: 4.0329146112660565e+26 == 4.0329146112661e+26
Run Code Online (Sandbox Code Playgroud)
它们显然不相等,但理论上它们应该相等。
在javascript中对大数执行相等的正确方法是什么(即使它是近似值)?
以下是d3.min源代码中的条件语句之一。
这是检查什么?:
value >= value
Run Code Online (Sandbox Code Playgroud)
这是完整的源代码:
export default function min(values, valueof) {
let min;
if (valueof === undefined) {
for (const value of values) {
if (value != null
&& (min > value || (min === undefined && value >= value))) {
min = value;
}
}
} else {
let index = -1;
for (let value of values) {
if ((value = valueof(value, ++index, values)) != null
&& (min > value || (min === undefined && value >= …Run Code Online (Sandbox Code Playgroud) javascript idioms comparison-operators conditional-statements d3.js
javascript ×3
operators ×2
python ×2
c++ ×1
c++20 ×1
comparison ×1
d3.js ×1
date ×1
equality ×1
expression ×1
idioms ×1
int ×1
json ×1
math ×1
mysql ×1
nonetype ×1
object ×1
perl ×1
php ×1
python-2.x ×1
python-3.x ×1