如何在Ruby中的一行中定义一个方法?

def greet; puts "hello"; end def greet; puts "hello"; end def greet; puts "hello"; end唯一的方法来在Ruby中的一行中定义一个方法?

如果使用圆括号,则可以避免使用分号:

 def hello() :hello end 

只要给出全新的答案:

一般避免单线方法。 虽然它们在野外有些stream行,但它们的定义语法有一些特殊性,使得它们的使用不受欢迎。 无论如何,单行方法中不应多于一个expression式

 # bad def too_much; something; something_else; end # okish - notice that the first ; is required def no_braces_method; body end # okish - notice that the second ; is optional def no_braces_method; body; end # okish - valid syntax, but no ; make it kind of hard to read def some_method() body end # good def some_method body end 

规则的一个例外是空体方法。

 # good def no_op; end 

从bbatsov /ruby风格指南 。

 def add a,b; a+b end 

分号是Ruby的内联语句终结符

或者你可以使用define_method方法。 (编辑:这个在Ruby 1.9中被弃用)

 define_method(:add) {|a,b| a+b } 

其他方式:

 define_method(:greet) { puts 'hello' } 

如果您不想在定义方法时input新的范围,可以使用它。

另一种方式:

 def greet() return 'Hello' end