我有一个工作但乏味的代码。
我有 6 个onoff对象来描述 6 个 GPIO 输入。它们都需要注册一个回调[即 obj.watch(callback)] 来检测状态变化。
目前,我的功能代码如下所示
Var states = [[0,0], [0,0], [0,0]];
Var handle0 = function (err, A) {
State[0][0] = A;
Eval0(state[0]);
}
Var handle1 = function (err, A) {
State[0][1] = A;
Eval0(state[0]);
}
Var handle2 = function (err, A) {
State[1][0] = A;
Eval1(state[1]);
}
Var handle3 = function (err, A) {
State[1][1] = A;
Eval1(state[1]);
}
Var handle4 = function (err, A) {
State[2][0] = A;
Eval2(state[2]);
}
Var handle5 = function (err, A) {
State[2][1] = A;
Eval2(state[2]);
}
Input0.watch(handle0);
Input1.watch(handle1);
Input2.watch(handle2);
Input3.watch(handle3);
Input4.watch(handle4);
Input5.watch(handle5);
如您所见,例程大多相同,但只需要访问不同的变量。但是,由于 onoff.watch 回调需要一个函数来处理两个参数(错误状态和值),我不知道如何扩展我的回调以使其通用以包含我的状态信息。
是否有设计模式来简化这些回调创建?