我似乎无法将这个代码的第一部分(+ =)与三元运算符结合起来.
h.className += h.className ? ' error' : 'error'
Run Code Online (Sandbox Code Playgroud)
我认为这段代码的工作方式如下:
h.className = h.className + h.className ? ' error' : 'error'
Run Code Online (Sandbox Code Playgroud)
但这不正确,因为这会在我的控制台中出错.
所以我的问题是我应该如何正确地插入这段代码?
javascript variable-assignment conditional-operator operator-precedence compound-assignment
我需要知道python中的+ =做了什么.就这么简单.我也很感激链接到python中其他简写工具的定义.
以下操作的结果是什么解释?
k += c += k += c;
Run Code Online (Sandbox Code Playgroud)
我试图理解以下代码的输出结果:
int k = 10;
int c = 30;
k += c += k += c;
//k=80 instead of 110
//c=70
Run Code Online (Sandbox Code Playgroud)
目前我正在努力理解为什么"k"的结果是80.为什么分配k = 40不起作用(实际上Visual Studio告诉我该值没有在其他地方使用)?
为什么k 80而不是110?
如果我将操作拆分为:
k+=c;
c+=k;
k+=c;
Run Code Online (Sandbox Code Playgroud)
结果是k = 110.
我试图通过CIL查看,但是我在解释生成的CIL方面并没有那么深刻,也无法得到一些细节:
// [11 13 - 11 24]
IL_0001: ldc.i4.s 10
IL_0003: stloc.0 // k
// [12 13 - 12 24]
IL_0004: ldc.i4.s 30
IL_0006: stloc.1 // c
// [13 13 - 13 30]
IL_0007: ldloc.0 // …Run Code Online (Sandbox Code Playgroud) 我在Java中有很长的比较,我想知道它们中的一个或多个是否真实.比较字符串很长且难以阅读,因此我将其分解以便于阅读,并自动使用快捷操作符|=而不是negativeValue = negativeValue || boolean.
boolean negativeValue = false;
negativeValue |= (defaultStock < 0);
negativeValue |= (defaultWholesale < 0);
negativeValue |= (defaultRetail < 0);
negativeValue |= (defaultDelivery < 0);
Run Code Online (Sandbox Code Playgroud)
negativeValue如果任何默认的<something>值为负,我希望是真的.这有效吗?它会做我期望的吗?我在Sun的网站或stackoverflow上看不到它,但Eclipse似乎没有问题,代码编译和运行.
同样,如果我想执行几个逻辑交叉点,我可以使用&=而不是&&吗?
因此,对于在布尔二元运算符,Java有&,|,^,&&和||.
让我们简要总结一下他们在这里简要介绍的内容:
对于
&,结果值是true两个操作数值是否为true; 否则,结果是false.对于
|,结果值是false两个操作数值是否为false; 否则,结果是true.对于
^,结果值是true操作数值是否不同; 否则,结果是false.该
&&操作是一样&,但是评估其右边的操作数只有在其左侧操作数的值true.该
||操作是一样|的,但评估其右边的操作数只有在其左侧操作数的值false.
现在,所有5间,那些3有复合赋值版本,分别为|=,&=和^=.所以我的问题是显而易见的:为什么不是Java提供&&=和||=呢?我发现我需要那些比我更需要更多的&=和|=.
而且我不认为"因为它太长"是一个很好的答案,因为Java有>>>=.这个遗漏必须有更好的理由.
java conditional-operator short-circuiting assignment-operator compound-assignment
最近我遇到了这个问题:分配运营商链理解.
在回答这个问题,我开始怀疑我自己的加法赋值运算符的行为的理解+=或任何其他operator=(&=,*=,/=等).
我的问题是,a下面的表达式中的变量何时更新到位,以便在评估期间其更改的值反映在表达式的其他位置,它背后的逻辑是什么?请看下面两个表达式:
表达1
a = 1
b = (a += (a += a))
//b = 3 is the result, but if a were updated in place then it should've been 4
Run Code Online (Sandbox Code Playgroud)
表达2
a = 1
b = (a += a) + (a += a)
//b = 6 is the result, but if a is not updated in place then it should've been 4
Run Code Online (Sandbox Code Playgroud)
在第一个表达式中,当(a …
我们为所有逻辑运算符,Shift运算符,Additive运算符和所有Multiplicative运算符都有等效的赋值运算符.
为什么逻辑运算符被遗漏了?难道有一个很好的技术理由吗?
c# language-design operators assignment-operator compound-assignment
这个问题我有一段时间以来一直有点恼火,而且从来没有到处寻找答案.
但是我想我至少可以问这个问题,也许有人可以解释一下.
基本上我使用的许多语言都使用语法糖来编写(使用C++中的语法):
int main() {
int a = 2;
a += 3; // a=a+3
}
Run Code Online (Sandbox Code Playgroud)
虽然在lua +=中没有定义,所以我必须写a=a+3,这也是关于语法糖.当使用更"有意义"的变量名称时,例如:bleed_damage_over_time或者它开始变得乏味的东西:
bleed_damage_over_time = bleed_damage_over_time + added_bleed_damage_over_time
Run Code Online (Sandbox Code Playgroud)
代替:
bleed_damage_over_time += added_bleed_damage_over_time
Run Code Online (Sandbox Code Playgroud)
所以如果你没有一个好的解决方案,我想知道如何解决这个问题,在这种情况下,我当然会有兴趣听到它; 但是为什么lua没有实现这种语法糖.
在C++中编写这样的代码时:
bool allTrue = true;
allTrue = allTrue && check_foo();
allTrue = allTrue && check_bar();
Run Code Online (Sandbox Code Playgroud)
check_bar()如果check_foo()退回,将不会被评估false.这称为短路或短路评估,是惰性评估原则的一部分.
这是否适用于复合赋值运算符&=?
bool allTrue = true;
allTrue &= check_foo();
allTrue &= check_bar(); //what now?
Run Code Online (Sandbox Code Playgroud)
用逻辑OR替换所有&with |和truewith false.
c++ boolean lazy-evaluation short-circuiting compound-assignment
在Java中,当你这样做
int b = 0;
b = b + 1.0;
Run Code Online (Sandbox Code Playgroud)
您可能会丢失精度错误.但是,如果你这样做,为什么呢?
int b = 0;
b += 1.0;
Run Code Online (Sandbox Code Playgroud)
没有任何错误?