定义方法时,它将返回与该方法同名的符号。这有什么意义吗?还是只是作为您创建它的验证而已?
像这样:
def something
...
end
# => :something
IRb始终显示调用inspect
最后一个求值表达式的值的结果。该表达式是文字表达式,条件表达式,消息发送,类定义表达式还是方法定义表达式都无关紧要。
一切都在Ruby中返回一个值,即一切都是一个表达式,而在Ruby中没有语句。
过去,方法定义表达式的返回值是不确定的。大多数Ruby实现只是nil
从方法定义表达式中返回,但是例如Rubinius返回了CompiledMethod
所定义方法的对象。
在Ruby 2.1中,方法定义表达式的返回值被标准化为Symbol
对应于方法名称。这样,您就可以将方法定义表达式用作需要方法名称作为参数的方法中的参数。
一些例子:
# Before Ruby 2.0:
def foo; end
private :foo
# After Ruby 2.0:
private def foo; end # similar for `protected`, `public`, `module_function`
# Before Ruby 2.0:
def map; end
alias_method :collect, :map
# After Ruby 2.0:
alias_method :collect, def map; end
就个人而言,我宁愿一个方法定义表达,以评估一个UnboundMethod
对应于该方法的对象,方法,如public
,private
,protected
,alias_method
,module_function
等应修正接受UnboundMethod
S IN除了Symbol
S和String
秒。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句