Ruby新手在这里了解完整堆栈在线程序Bloc中的each
方法和循环。这个具体问题已经讨论过before here,但我收到的错误信息与该帖子不同,我不确定原因。
在说明中,class StringModifier
"在启动时采用字符串"和实例方法proclaim
"将字符串拆分为单独的单词数组,为每个单词添加感叹号,然后将它们与空格连接在一起并返回新字符串。"
我在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
答案 0 :(得分:2)
您的proclaim
方法需要再次传入字符串。这不是必需的,因为您已经在初始化时存储了字符串。您的代码似乎也包含一些问题,可以简化。试试这个:
class StringModifier
attr_accessor :string
def initialize(string)
@string = string
end
def proclaim
@string.split(' ').join('! ').concat('!')
end
end
答案 1 :(得分:0)
这对我有用。我自己经历了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