2012-03-05 119 views
3

有没有办法从所需文件返回?看来return语句只允许在方法/ lambdas里面。从包含文件返回

+1

你不应该在需要的文件的顶层执行很多代码,那么它的用途是什么? – 2012-03-05 15:42:14

+1

这是一个rails初始化器,我想只在包含某个gem时才执行它,并且希望避免将所有内容都包含在if块中。无论如何,这并不是什么大不了的事情,但我只是好奇,如果红宝石有这样的事情。 – rabusmar 2012-03-05 15:47:26

+0

我建议你把它包装在一个'if'块中。你可能看起来很奇怪,但实际上在Ruby中做这种事情并不罕见。 @tadman为+1 – 2012-03-05 15:56:34

回答

6

您总是可以将大部分代码包装在条件中。由于红宝石允许这些几乎任何地方,你甚至可以有条件地声明类:

if (defined?(Something)) 
    class SomeClass 
    # ... 
    end 
end 

这不是与C与#ifdef但并不需要单独的语言。即使你认为它看起来很奇怪,这也是做事的标准方式。