And*_*Dev -10 java conditional
我在Java中有这个代码来控制机器人的主臂:
if (gamepad1.left_stick_y > 50)
{
mainArm.setDirection(DIRECTION_FORWARD);
mainArm.setPower(50);
}
else if (gamepad1.left_stick_y < -50)
{
mainArm.setDirection(DIRECTION_REVERSE);
mainArm.setPower(50);
}
Run Code Online (Sandbox Code Playgroud)
这只是一小部分,但是有很多条件就是这样,如果条件为真,有些只有一个陈述.它可以简化为:[伪代码.不要从字面上理解.我知道它不会起作用]
if (gamepad1.left_stick_y > 50) mainArm.setDirection(DIRECTION_FORWARD), mainArm.setPower(50);
else if (gamepad1.left_stick_y < -50) mainArm.setDirection(DIRECTION_REVERSE), mainArm.setPower(50);
Run Code Online (Sandbox Code Playgroud)
不幸的是,用于直接与硬件接口以设置电源的库是闭源的,因此修改它们是不可能的.
你提出的优化是一个糟糕的.它比原来更糟糕.代码变得不易读,更容易出错.如果存在多个这样的条件,可以考虑通过以更多OOP方式重新设计逻辑或通过定义将从switch语句调用的方法来进行重构......
此代码无法编译:
if (gamepad1.left_stick_y>50) mainArm.setDirection(DIRECTION_FORWARD), mainArm.setPower(50);
// ^
Run Code Online (Sandbox Code Playgroud)
您尝试通过放置逗号将多个操作转换为一个操作将无效:
JLS 15.27:与C和C++不同,Java编程语言没有逗号运算符.
一种方法是允许在一次通话中改变功率和方向:
if (gamepad1.left_stick_y > 50) mainArm.setDirectionAndPower(DIRECTION_FORWARD, 50);
Run Code Online (Sandbox Code Playgroud)
用于设置电源的库是闭源的
如果您无法修改库,则可以使用自己的帮助方法来解决此缺点:
private static void setDirectionAndPower(Arm arm, Direction dir, int pow) {
arm.setDirection(dir);
arm.setPower(pow);
}
Run Code Online (Sandbox Code Playgroud)