2016-03-08 111 views
0

我正在研究一些重构工具。如果我可以根据定义替换某个方法调用,这将是非常好的,这通常是一个陈述。例如,原始代码可能是:有没有办法将一组语句分组?

some_condition ? a : b 
def a 
    ... 
    # statements1 
    ... 
end 
def d 
    ... 
    # statements2 
    ... 
end 

而且我希望我的内联工具直接用代码块替换方法调用。

要做到这一点,我想将一组语句组合在一起。我们通常如何做到这一点?有没有写这样的代码的方法?

some_condition ? { 
    ... 
    # statements1 
    ... 
} : { 
    ... 
    # statements2 
    ... 
} 
+0

您可以使用if/else语句或将语句提取到方法。有时将这些语句放在块或Proc中也是有意义的。 –

+0

@DavidGrayson感谢您的建议,但我正在做一些代码替换工作,如果我可以通过语句块内联一些方法调用,这将非常棒。 –

+0

这不是你想要内联的那种代码。它看起来不太好,它会产生语法错误。更好地使用if-else这里 –

回答

0

您的代码可以简化为一行。

%w(a b c).each { |char| puts char } 

else声明在这里无关紧要,因为true将始终返回true。

+1

嗨,我更新了我的问题描述。你知道我怎么能解决这个问题吗? –

+0

看看我的答案 –

1

是的。您可以使用圆括号,或者使用begin ... end

true ? (
    puts "a" 
    puts "b" 
    puts "c" 
) : (
    puts "d" 
) 


true ? begin 
    puts "a" 
    puts "b" 
    puts "c" 
end : begin 
    puts "d" 
end 
+0

太棒了!非常感谢。 –

+1

到目前为止,您还没有投票或接受任何答案。 – sawa

相关问题