如何在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