开发问题:如何实现后台被动累加int值及修复代码编译报错
问题解决指南
1. 先搞定代码语法报错
你写的这段代码有俩明显问题:
- 赋值方向搞反了:应该是把三个变量的和赋值给
totalVPLeft,不是反过来写 - return语句里的表达式不符合语法规范
正确写法分两种,选哪种都行:
// 写法一:清晰直观 int calculateLeftTotalVP(){ totalVPLeft = movpLeftCounter + totalTOLeftCounter + paintedLeftCounter; return totalVPLeft; }
// 写法二:简化成一行 int calculateLeftTotalVP(){ return totalVPLeft = movpLeftCounter + totalTOLeftCounter + paintedLeftCounter; }
这么改完,那个Missing selector的语法错误就消失了。
2. 实现被动自动计算(不用点按钮触发)
要让三个变量一变化,totalVPLeft就自动更新,核心思路是监听这三个变量的修改动作,变量一更新就自动触发计算,不同平台的具体实现方式如下:
如果你做Android开发:
- 用
LiveData或ObservableField包装三个变量:把movpLeftCounter、totalTOLeftCounter、paintedLeftCounter定义为MutableLiveData<Integer>类型,给它们添加观察者,只要其中任何一个变量更新,就自动调用calculateLeftTotalVP()更新totalVPLeft。 - 或者给三个变量写自定义setter方法,每次赋值时直接触发计算:
private int movpLeftCounter; public void setMovpLeftCounter(int value) { movpLeftCounter = value; calculateLeftTotalVP(); // 变量更新时自动计算 } // totalTOLeftCounter和paintedLeftCounter也照这个逻辑写setter
如果你做iOS开发:
- 用KVO(键值观察)监听三个变量的变化,变量值一修改就触发计算。
- 或者用Combine框架,将三个变量的更新事件合并,收到更新时自动计算总和。
普通Java/桌面程序场景:
- 实现观察者模式:定义一个观察者接口,让持有
totalVPLeft的类作为观察者,三个变量所在的类每次修改变量值时,就通知观察者触发计算。 - 同样可以用自定义setter的方式,每次给变量赋值就自动调用计算函数。
内容的提问来源于stack exchange,提问作者Nomad09
相关产品推荐
相关产品推荐

