是否可以通过三元运算符为变量赋值,而不必两次引用相同的变量?
例如,有没有这样的方式:
a=a=="1"?"yes":"no";
可以这样做吗?:
a=="1"?"yes":"no";
我知道上面的这条线可能不起作用,所以我在第一行给出了一个简短的选择。
小变量名称(如上例所示)的问题并非如此。但是,如果有一种方法可以使用数组和更大的变量名称,以帮助保持代码紧凑,那将是很好的。我会对Javascript和PHP解决方案感兴趣。
答案 0 :(得分:1)
不,三元运算符严格定义为:
p ? vt : vf
p
表达式导致布尔值(因此是测试),vt
表示p
的值为真,vf
表示测试结果为假。没有办法引入副作用。当然,测试(可以是函数调用或任何东西)可能会导致副作用。
据我所知 - 在任何情况下都不会有操作员产生这种副作用。这可能也是一个坏主意:副作用应该有很好的记录,并且有点明确。如果事情发生时没有任何语法警告,源代码就变得难以阅读,调试和理解。
您确实可以将结果分配给变量,如:
在 JavaScript :
中var x = 3;
var x = (x < 3) ? "smaller" : "larger";
或 PHP :
$x = 3;
$x = ($x < 3) ? "smaller" : "larger";
然而,您在此向=
运算符发出警告,x
的值将在该指令后发生变化。
答案 1 :(得分:-1)
检查
<?php
$a = 5;
$a = ($a==5) ? 'yes' : 'no';
echo 'the result is '.$a; // the result is yes
?>