我有很多这样的方法:

def enableMotors
  @posIface.Lock 1
  @posIface.data.cmdEnableMotors = 1
  @posIface.Unlock
end

def goTo (pos)
  @posIface.Lock 1
  @posIface.data.cmdVelocity.pos = pos
  @posIface.Unlock
end

我想创建功能到:before_filter和:after_filter或任何其他方式,我可以保持代码尽可能干燥。
我不想只靠铁轨或其他沉重的东西。

最佳答案

你真的需要一个完整的:前:后回调系统还是这足够你?

def with_lock(&block)
  @posIface.Lock 1
  yield
  @posIface.Unlock
end

def enableMotors
  with_lock { @posIface.data.cmdEnableMotors = 1 }
end

def goTo (pos)
  with_lock { @posIface.data.cmdVelocity.pos = pos }
end

07-27 13:50