newTilt = (newTilt > 90) ? 90 : newTilt;
这行代码是什么意思?这是我第一次在Android中看到类似的东西。
这是包含上述行的完整方法:
public void onTiltMore(View view) {
if (!checkReady()) {
return;
}
CameraPosition currentCameraPosition = mMap.getCameraPosition();
float currentTilt = currentCameraPosition.tilt;
float newTilt = currentTilt + 10;
newTilt = (newTilt > 90) ? 90 : newTilt;
CameraPosition cameraPosition = new CameraPosition.Builder(currentCameraPosition)
.tilt(newTilt).build();
changeCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
答案 0 :(得分:6)
这是ternary
表达式。它表示如果此时newTilt高于90,则将其设置为90,否则保持不变。您可以种以if-else语句的方式来思考它。
if(newTilt > 90) {
newTilt = 90;
} else {
newtilt = newTilt; // which does nothing useful
}
答案 1 :(得分:3)
这个表达意味着
newTilt = (newTilt > 90) ? 90 : newTilt;
是一个表达式,它返回两个值之一90
或newTilt
。条件(newTilt > 90)
已经过测试。如果为真,则返回第一个值90。如果为false,则返回第二个值newTilt
。返回的值取决于条件测试(newTilt > 90)
答案 2 :(得分:1)
正如某人已经说过的那样,它被称为三元表达。这是你应该学到的东西,因为我已经看到它出现在很多面试问题上。这个表达式的作用是,如果表达式的计算结果为true,那么冒号的左侧将被用作结果,如果它的计算结果为false,则使用右侧。它经常被用作if / else语句的快捷方式。事实上,你可以这样写上面的内容:
if (newTilt > 90)
newTilt = 90;
else
newTilt = newTilt;
显然,你不需要上面的else语句,因为如果newTilt不到90就不会改变。我只是想告诉你三元是如何工作的。
事实上,三元仍然是一个条件表达式。
int var =(表达式)?真值:假值;
由于虚假条件实际上什么都不做,上面的三元组会更好地写成:
if (newTilt > 90)
newTilt = 90;
这就是你所需要的一切。