如果现在要写一个控制器,对同一个按钮进行操作,点击一次是开灯,再点击一次是开灯,以此类推。
非常简单,创建一个成员变量,然后每次使用时取反就好了就可以了。
伪代码如下:
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%
!,更别提四舍五入之后的情况了。