附加到最终声明的方法?

时间:2015-04-20 23:25:32

标签: ruby

我在代码战中遇到了一些编码挑战,在你通过挑战后你会看到其他人的答案,其中一个看起来像这样:

def weirdcase(string)
  string.split(' ').map do |word|
    word.split('').each_with_index.map do |char, i|
      i % 2 == 0 ? char.upcase : char.downcase
    end.join('')
  end.join(' ')
end

代码运行得很好。我从来没有见过像这样结束的方法。我很好奇。我想更多地了解这一点,例如:这是常见的吗?它被认为是好的还是坏的做法?为什么在某种情况下这会更好?如果是的话?人们可能想要结束的方法的一些例子是什么?

2 个答案:

答案 0 :(得分:2)

这称为方法链。 它对前一个方法的结果执行链式方法。

例如,这会调用.split变量上的string方法,该变量返回调用.map方法的数组。 string.split(' ').map do |word|

答案 1 :(得分:2)

方法调用不是附加到end关键字,而是附加到以end关键字结尾的块的结果。 Ruby中的所有内容都返回一个值,而且几乎每个值都是一个对象。因此,您可以调用这些值的方法。