#ruby #oop
#ruby #ооп
Вопрос:
Может кто-нибудь объяснить мне, что делает эта строка кода?
def count_sentences
new_array = self.split(/[.?!]/).reject { |string| string.empty? }
new_array.length
end
Ответ №1:
Итак, это исправление для String
класса. Он предназначен для того, чтобы вы могли подсчитывать предложения в строке.
'That is a cat. This is a dog'.count_sentences
>= 2
Как это работает?
def count_sentences
new_array = self.split(/[.?!]/).reject {|string| string.empty? }
return new_array.length
end
self.split(/[.?!]/)
разбивает self
(строку, для которой вызывается метод) на отдельные строки, разделяя их точками, вопросительными или восклицательными знаками. Итак, в основном, массив предложений.
.reject {|string| string.empty? }
удаляет все элементы в массиве, которые являются пустыми… так что «привет …» — это всего лишь одно предложение, а не четыре. Это может быть более экономично записано как .reject(amp;:empty?)
Наконец, мы возвращаем количество строк в массиве с return new_array.length
помощью . Поскольку это последняя строка в методе, вам действительно не нужно иметь явный «возврат»… достаточно просто сделать new_array.length