Рубиновые петли и классы; разбить строку на массив и снова вернуться к строке
Руби новичок здесь работает над циклами с классами. Я должен был создать метод, который бы брал строку и добавлял восклицательные знаки в конец каждого слова (делая его массивом с.split) и снова присоединял "восклицательные" слова в виде строки. Я занимаюсь этим уже два часа и решил, что должен обратиться за помощью. У меня есть несколько идей, но я продолжаю выдавать ошибку NoMethod. Ниже приведен один из способов, который имел смысл для меня, но, конечно, он не работает. Я также добавил спецификации в самом конце.
class StringModifier
attr_accessor :string
def initialize(string)
@string = string
end
def proclaim
new_array = []
string.split.each do |word|
new array = "#{word}!"
new_array.join
end
new_array
end
end
SPECS
describe StringModifier do
describe "#proclaim" do
it "adds an exclamation mark after each word" do
blitzkrieg_bop = StringModifier.new("Hey ho let's go").proclaim
expect(blitzkrieg_bop).to eq("Hey! ho! let's! go!")
end
end
end
1 ответ
Решение
Напишите ваш метод как:
def proclaim
string.split.map { |word| "#{word}!" }.join(" ")
end
Или напишите это как:
def proclaim
a = string.split
("%s! " * a.size % a).strip
end
Проверено:
[30] pry(main)> a = "Hey ho let's go".split
=> ["Hey", "ho", "let's", "go"]
[31] pry(main)> ("%s! " * a.size % a).strip
=> "Hey! ho! let's! go!"
[32] pry(main)>