0

コードを DRY に維持したいので、この疑似コードを変換したいと思います。

def aMethod
  a = aModel.find(2)
  b = a.getVariable
  a.setVariable = c
end

このようなもので

def aMethod
  anotherMethod(aModel, getVariable)
end

def anotherMethod(model, var)
  a = model.find(2)
  b = a.var
  a.var = c
end

私のテストでは、モデルには問題がないようですが、getVariable(モデルの変数へのアクセスなど) は機能しません。undefined local variable or method

何か案は?

4

1 に答える 1

3

あなたがやろうとしていることを私が理解しているなら、あなたはおそらく使いたいsendでしょう、例えば、

def anotherMethod(model, var_sym)
  a = model.find(2)
  b = a.send(var_sym)
  a.send("#{var_sym}=", c)
end

anotherMethod(aModel, :getVariable)

( OPのローカルであるため、、、、または何であるか、または何をすべきabわからないという警告があります。)c

于 2012-11-27T21:07:24.550 に答える