Как упростить split, iterate.each и объединение в ruby? — Ruby beginner

#ruby-on-rails #ruby #join #split #loops

#ruby-on-rails #ruby #Присоединиться #разделить #циклы

Вопрос:

 words = self.tag.split
words.each { |word| word = word.stem }
self.tag = words.join(' ')
  

Для данного предложения я хочу выполнить stem действие над каждым отдельным словом.

Есть ли способ упростить этот код?

Ответ №1:

 self.tag = self.tag.split.map(amp;:stem).join(' ')
  

Комментарии:

1. Намного лучше; Интересно, почему я всегда забываю об этом? (Я почти всегда делаю:( 1

Ответ №2:

 self.tag = self.tag.split.collect { |w| word.stem }.join(' ')
  

Не то чтобы я обязательно рекомендовал это делать.

Комментарии:

1. Выполнение этого не приведет к переназначению значения self.tag a.split.collect{|word| word.reverse}.join => "sihteratset", a => "this are test"

2. Дэйв, можешь ли ты порекомендовать лучший подход к базовым проблемам. Хотел бы поддержать это.

3. @MichaelDurrant Не уверен, что ты имеешь в виду. Я просто не уверен, что новичкам всегда выгодно втискивать много функциональности в одну строку 🙂