私は現在 rspec チュートリアルを行っていますが、テストを読むのに苦労しています。私が読もうとしている現在のテストは次のとおりです。
describe Book do
before do
@book = Book.new
end
describe 'title' do
it 'should capitalize the first letter' do
@book.title = "inferno"
@book.title.should == "Inferno"
end
クラス Book を作成し、そのクラス内に大文字化するメソッドを作成します。ただし、これをコーディングする方法についての私の考えは完全に間違っています (この場合に機能するコードの例を見てきました)。
私がやろうとしたこと:
class Book
def initialize(book)
@book = book
end
def title(@book)
@book.capitalize
end
end
最終的に機能したソリューション:
class Book
attr_reader :title
def initialize(title=nil)
@title = title && title.capitalize!
end
def title=(new_title)
@title = new_title && new_title.capitalize!
end
end
@ の意味がよくわかりません。クラス全体で機能する変数を作成することだと思いました。さらに、@book (rspec テストで指定) の代わりに @title が使用される理由が気になります。
さらに、コードの「実行前」の部分と、@book = Book.new を要求する理由に苦労しています。
また、&& の部分も紛らわしいです。@title = title.capitalize だけではなぜダメなのですか!
これが意味をなさない場合は、喜んで明確にします (この投稿が長いことは承知しています)。