объяснены регулярное выражение ruby и перечислимый метод

#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