Ruby 通过rspec的故障
我正在努力通过这次考试Ruby 通过rspec的故障,ruby,rspec,Ruby,Rspec,我正在努力通过这次考试 describe "title" do it "should capitalize the first letter" do @book.title = "inferno" expect(@book.title).to eq("Inferno") end it "should capitalize every word" do @book.title = "stuart little" expect(@book.title).to eq("Stuart
describe "title" do
it "should capitalize the first letter" do
@book.title = "inferno"
expect(@book.title).to eq("Inferno")
end
it "should capitalize every word" do
@book.title = "stuart little"
expect(@book.title).to eq("Stuart Little")
end
使用此代码
class Book
attr_accessor :title
def initialize(title="")
@title = capital(title)
end
def capital(title)
articles = %w(the a an and of in the)
new_title = []
title.split.each do |w|
articles.include?(w)? new_title << w : new_title << w.capitalize
end
new_title[0] = new_title[0].capitalize
new_title.join(" ")
end
end
book = Book.new("stuart little")
puts book.title
教材
属性存取器:标题
def初始化(title=”“)
@标题=资本(标题)
结束
def资本(标题)
文章=%w(中的a和的)
新标题=[]
title.split.each do|w|
文章。包括?(w)?new_title当您将标题分配给new
方法时,您只运行capital
方法,而当您将标题分配给title=
setter方法时,则不运行该方法
我将用attr\u读取器
替换attr\u访问器
,并添加一个自定义title=
setter方法:
class Book
attr_reader :title
def initialize(title = '')
self.title = title # calls the setter below
end
def title=(title)
@title = capital(title)
end
private
def capital(string)
articles = %w( a an and in of the )
words = title.split.map do |word|
articles.include?(word) ? word : w.capitalize
end
words.join(' ').capitalize
end
end
对不起,我的所有问题,但是为什么attr_访问器对于需要title=setter方法的setter来说还不够?(感谢您的回答!)@Stephanie:attr\u accessor
生成一个简单的setter,如@title=title
。如果使用该方法,它不会调用capital
方法,它只会分配字符串,而不会在之前将其大写。但是如果您使用我的答案中的自定义title=
方法,它将分配更改字符串:@title=capital(title)
。这就更有意义了!非常感谢。我很高兴能帮上忙