Давайте разберемся с этим.
split(space)
превращает строку в список возможных слов.(На самом деле, если строка содержит два пробела в строке, список будет содержать пустую строку. Но это не имеет значения для этой цели.) Я предполагаю, что это метод экземпляра в String
;в противном случае split
не будет определено.
.each { |word| word.capitalize! }
.each
берет каждую вещь в списке (возвращаемую split
) и запускает следующий блок, передавая эту вещь какАрг в блок.|word|
говорит, что этот блок будет называть arg "словом".Таким образом, эффективно то, что это делает, состоит в том, что каждое слово в строке пишется с заглавной буквы (и каждая пустая строка и одиночный пунктуация тоже, но, опять же, это не важно - заглавные буквы не изменяют символы, которые не имеют понятия регистра).
.join(space)
склеивает слова обратно, заново вставляя пространство, которое раньше использовалось для их разделения.Возвращаемая строка также является возвращаемым значением функции.