清理依赖调用链
Clean up chain of dependent calls
如何让这样的代码更简洁:
def some_public_method(arg)
var1 = private_method(arg)
var2 = private_method1(var1) if var1
var3 = private_method2(var2) if var2
var4 = private_method3(var3) if var3
private_method4(var4) if var4
end
更新:抱歉,忘记更改方法名称
这是您可以做到的一种方式。
代码
def some_public_method(private_methods, arg)
private_methods.reduce(arg) { |x,m| x && send(m, x) }
end
private
def pm1(arg); arg+1; end
def pm2(arg); arg+2; end
def pm3(arg); arg+3; end
例子
private_methods = [:pm1, :pm2, :pm3]
some_public_method(private_methods, 0) #=> 6
def pm2(arg); nil; end
some_public_method(private_methods, 0) #=> nil
如何让这样的代码更简洁:
def some_public_method(arg)
var1 = private_method(arg)
var2 = private_method1(var1) if var1
var3 = private_method2(var2) if var2
var4 = private_method3(var3) if var3
private_method4(var4) if var4
end
更新:抱歉,忘记更改方法名称
这是您可以做到的一种方式。
代码
def some_public_method(private_methods, arg)
private_methods.reduce(arg) { |x,m| x && send(m, x) }
end
private
def pm1(arg); arg+1; end
def pm2(arg); arg+2; end
def pm3(arg); arg+3; end
例子
private_methods = [:pm1, :pm2, :pm3]
some_public_method(private_methods, 0) #=> 6
def pm2(arg); nil; end
some_public_method(private_methods, 0) #=> nil