Ruby ArgumentError в каждом методе
Руби Новичок здесь узнает о each
методы и циклы в полном стеке онлайн-программы Bloc. Об этой конкретной проблеме уже говорилось ранее, но я получаю сообщение об ошибке, отличное от этого поста, и я не знаю почему.
В инструкции class StringModifier
"принимает строку при инициации" и метод экземпляра proclaim
"разбивает строку на массив отдельных слов, добавляет к каждому восклицательный знак, затем соединяет их вместе с пробелами и возвращает новую строку".
Я продолжаю получать сообщение об ошибке ArgumentError
wrong number of arguments (0 for 1)
в ирб. Я не уверен, где я не объявляю аргумент. Разве это не то, что инициализирует string
переменная для? Это мой первый вопрос о SO, поэтому любая помощь или указание в правильном направлении будут оценены. Код и спецификация скрипта ниже:
class StringModifier
attr_accessor :string
def initialize(string)
@string = string
end
def proclaim(string)
new_array = []
string.each do |x|
new_array << "#{x.split(' ').join('!')}"
end
new_array
end
end
Вот сценарий спецификации:
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
2 ответа
Ваш proclaim
Метод ожидает, что строка будет передана снова. Это не нужно, так как вы уже сохраняете строку при инициализации. Также кажется, что ваш код содержал некоторые проблемы и может быть упрощен. Попробуй это:
class StringModifier
attr_accessor :string
def initialize(string)
@string = string
end
def proclaim
@string.split(' ').join('! ').concat('!')
end
end
Это сработало для меня. Я сам прохожу курс Bloc Ruby.
class StringModifier
attr_accessor :string
def initialize(string)
@string = string
end
def proclaim
new_array = []
string.split.each do |word|
new_array << "#{word}!"
end
new_array.join(" ")
end
end