#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 Не уверен, что ты имеешь в виду. Я просто не уверен, что новичкам всегда выгодно втискивать много функциональности в одну строку 🙂