Ruby 每个方法中的 ArgumentError

Ruby ArgumentError in Each Method

Ruby 新手在这里学习 each 全栈在线程序 Bloc 中的方法和循环。这个具体问题已经讨论 ,但我收到的错误消息与 post 不同,我不确定为什么。

在说明中,class StringModifier"takes a string on initiation"和实例方法proclaim"splits the string into an array of separate words, adds an exclamation mark to each, then joins them back together with spaces and returns the new string."

我一直在 irb 中收到错误 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

您的 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