如果现在要写一个控制器,对同一个按钮进行操作,点击一次是开灯,再点击一次是开灯,以此类推。
非常简单,创建一个成员变量,然后每次使用时取反就好了就可以了。
伪代码如下:
boolean flag = false;
void onClick() {
flag = !flag;
if (flag) {
//on
} else {
//off
}
}
取反的地方在于flag = !flag;
而通过 ^=就简单一点
boolean flag = false;
void onClick() {
if (flag ^= true) {
//on
} else {
//off
}
}
flag ^= true,每次操作的时候对都flag进行了改变,并且每次改变后都值都是之前的值相反。
例如有个Light对象,它有一个trun()方法每次,接收一个boolean参数
boolean flag = false;
void onClick() {
flag = !flag;
light.trun(flag);
}
可以改成
boolean flag = false;
void onClick() {
light.trun(flag ^=true);
}
源代码从5行变成了4行,整整节省了20%!,更别提四舍五入之后的情况了。