我被分配编写一些 ruby 代码,这些代码将与以下(a 段)rspec 测试一起使用:
before do
@book = Book.new
end
describe 'title' do
it 'should capitalize the first letter' do
@book.title = "inferno"
@book.title.should == "Inferno"
end
这是解决方案,但我不明白:
class Book
attr_reader :title
def title=(new_title)
words = new_title.split(" ")
words = [words[0].capitalize] +
words[1..-1].map do |word|
little_words = %w{a an and the in of}
if little_words.include? word
word
else
word.capitalize
end
end
@title = words.join(" ")
end
end
我认为我推断出@book.title = "inferno"
将运行该方法并最终为底部title
的变量创建一个新值是正确的。@title
我知道这会导致@book.title
更新为“Inferno”(大写),但我不知道为什么。这是def title
某种可变方法的情况,并且@title
是最终值吗?这是我目前最好的猜测。
编辑以防不清楚,我不明白为什么将@book.title ='inferno'
原因设置@book.title
为更新为“地狱”。