解决方法
我相信你的例子是错误的,因为你在这里做的是定义一个方法并在方法定义(不是方法调用)的结果上调用一个方法,它总是(通常是?)nil.
fmendez指的是一个类似的形式,但end是块的结尾,而不是那种情况下的方法定义.
所以,例如:
array.map do |element| element * element end.sum
假设,它会返回给定数组元素的平方和.
但是,如果您正在进行这样的方法链接,则更常见的是使用括号样式块而不是do..end,因此上面的示例将为:
array.map{ |element| element * element }.sum
Ruby中的块是方法参数,与任何其他方法参数(除专用语法之外)不同,因此将点后跟与后面的点放在一起并没有什么不同.
'hello'.concat(' world!').capitalize
这也是方法链的一个例子.