Ruby ArgumentError в каждом методе

Руби Новичок здесь узнает о each методы и циклы в полном стеке онлайн-программы Bloc. Об этой конкретной проблеме уже говорилось ранее, но я получаю сообщение об ошибке, отличное от этого поста, и я не знаю почему.

В инструкции class StringModifier "принимает строку при инициации" и метод экземпляра proclaim "разбивает строку на массив отдельных слов, добавляет к каждому восклицательный знак, затем соединяет их вместе с пробелами и возвращает новую строку".

Я продолжаю получать сообщение об ошибке ArgumentErrorwrong 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
Другие вопросы по тегам