到目前为止,我认为条件运算符int a = b == 2 ? x1 : x2;总是可以被if/else语句替换.
int a;
if (b == 2)
a = x1;
else
a = x2;
Run Code Online (Sandbox Code Playgroud)
两者中的一个之间的选择总是一个品味问题.今天我正在处理一个任务,如果我可以写一个参考将是有用的:
int& a;
if (b == 2)
a = x1;
else
a = x2;
Run Code Online (Sandbox Code Playgroud)
这是不允许的,我尝试使用条件运算符初始化引用.这是有效的,我开始意识到,条件运算符并不总是可以被if/else语句替换.
我对这个结论是对的吗?
使用遗留代码,我发现我得到了很多这样的声明(超过500个)
bool isAEqualsB = (a == b) ? true : false;
Run Code Online (Sandbox Code Playgroud)
像这样重写它是否有意义?
bool isAEqualsB = (a == b)
Run Code Online (Sandbox Code Playgroud)
或者将在编译时进行优化?
提前致谢,
桑蒂!=)
使用看起来像这样的缩小代码,
f&&!f.error?k.button.b==k.button.c.G?k.button.Q(b,e,f,c,d):k.button.b==k.button.c.o&&k.button.P(b,e,f,c,d):(console.error(f),f=f.error.message||chrome.i18n.getMessage("error_tooltip"),k.button.v(b.id,f),d({action:"error"}))
Run Code Online (Sandbox Code Playgroud)
是否有一个自动化工具可以将一行条件运算符转换为一系列if语句?
例1:
从
(i < 0 ? function1() : function2())
Run Code Online (Sandbox Code Playgroud)
至
if (i < 0) {
function1();
} else {
function2();
}
Run Code Online (Sandbox Code Playgroud)
例2:
从
(i < 0 ? function1() : (i === 0 ? function2() : function3()))
Run Code Online (Sandbox Code Playgroud)
至
if (i < 0) {
function1();
} else {
if (i === 0) {
function2();
} else {
function3();
}
}
Run Code Online (Sandbox Code Playgroud) 这可以使用isNAN而不是!isset在Javascript中完成.使用下面的示例 - 两个表单都发布到我的脚本,一个没有值,一个有值.如果post var不存在,下面的代码是否是在PHP中执行此操作以正确分配值的正确方法?
$ mycheck =!isset($ _ POST ['value'])?0:$ _POST ['value'];
<?
if($_POST) :
$mycheck = !isset($_POST['value']) ? 0 : $_POST['value'];
echo $mycheck;
endif;
?>
<!-- send value-->
<form action="" method="post">
<select name="value">
<option value="0">0</option>
<option value="5">5</option>
</select>
<input type="submit" name="submit">
</form>
<!-- doesn't send value-->
<form action="" method="post">
<input name="different_var">
<input type="submit" name="submit">
</form>
Run Code Online (Sandbox Code Playgroud) if tarX == 'ini' or 'txt' and act == 'm':
Run Code Online (Sandbox Code Playgroud)
在普通英语中,if语句需要验证2个条件是否为真:
我尝试了几种变化无济于事.我确定这是我的语法/逻辑错误而不是python无能.下面的语句起作用是因为(假设)和语句左边的条件比较一个变量(tarX)表示单个字符串(exe)的相等性,同样适用于右变量(act)上的条件(与)相比(米).我假设我没有正确"打包"if tarX =='ini'或'txt'和act =='m':声明.
如果tarX =='exe'并且act =='m':
python if-statement conditional-operator conditional-statements
我试图在列表理解中实现三元条件运算符.我写得像这样:
lst.append(dict2obj(item)) if type(item) is not in ['int'] else lst.append(item) for item in v
Run Code Online (Sandbox Code Playgroud)
lst空列表在哪里,v是另一个包含各种元素的列表.编辑器在语法上显示它不正确.我究竟做错了什么?
在JavaScript中,使用之间有什么区别
true ? 'Hello' : 'Goodbye' //Evaluates to "Hello"
false ? 'Hello' : 'Goodbye' //Evaluates to "Goodbye"
Run Code Online (Sandbox Code Playgroud)
和
true && 'Hello' || 'Goodbye' //Evaluates to "Hello"
false && 'Hello' || 'Goodbye' //Evaluates to "Goodbye"
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
int x;
int& f() {
return x ? x : throw 0;
}
Run Code Online (Sandbox Code Playgroud)
随着gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)我得到以下编译错误:
cannot bind non-const lvalue reference of type ‘int&’ to an rvalue of type ‘int’
Run Code Online (Sandbox Code Playgroud)
请注意,这在clang中编译得很好.以下是(我相信的)标准中的相关陈述:
N4659 [8.16.2.1](条件运算符):
第二个或第三个操作数(但不是两个)是一个(可能带括号的)throw-expression(8.17); 结果是另一个的类型和值类别.
据我所知,x是一个左值,所以在我看来clang是对的.我错了吗?
c++ g++ conditional-operator language-lawyer value-categories
如果在一行中,如何设置内部值?
String amount = myJSON.optString("cValue")
double cValue = (amount != null && !amount.isEmpty()) ? Double.parseDouble(amount) : 0;
if (cValue > 0) {
mySavings.setCouponValue(cValue);
} else {
mySavings.setCouponValue(0.0);
}
Run Code Online (Sandbox Code Playgroud) if-statement ×3
c++ ×2
javascript ×2
php ×2
python ×2
.net ×1
c# ×1
conditional ×1
g++ ×1
java ×1
list ×1
optimization ×1
performance ×1
syntax ×1