我有以下接受可选块的方法,并且我已经按照以下方式编写了它:
def top_method(&block)
if block
if block.call == 1
another_method_1
another_method_2
end
else
another_method_3
end
end
起初我认为可以重构如下:
if block.call == 1
another_method_1
another_method_2
else
another_method_3
end
但是如果没有块被block.call
传递call
到. 有没有办法在第一条语句中只用一个条件重写上面的方法(比如在出错时跳过它)?nil
top_method
if
另外,我想知道是否可以将内部if
语句重构为一行。有没有办法做到这一点?我的意思如下:
if block
(run another_method_1 and another_method_2) if block.call == 1
end
提前致谢!:)