私は、次の (a の一部) rspec テストで動作する ruby コードを書くように割り当てられています。
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
ません。これはdef title
ある種の変数メソッドであり@title
、それが最終値である場合ですか? それが現時点での私の最良の推測です。
明確でない場合の編集、私が理解していないのは、設定@book.title ='inferno'
が@book.title
「インフェルノ」に更新される理由です。