현재 rspec 튜토리얼을 진행하고 있으며 테스트를 읽는 데 어려움이 있습니다. 내가 읽은하려고 현재 테스트입니다 : 나는 어떻게 나 한테 물어 무엇 이해할 수ruby : 클래스를 이해하고 변수를 정의하는 데 문제가 있습니다. @
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
: 클래스 예약 및 활용하기 위해 클래스 내부의 방법을 만들 수 있습니다. 작업 결국
class Book
def initialize(book)
@book = book
end
def title(@book)
@book.capitalize
end
end
솔루션 : 그러나 이것은 완전히 잘못 코딩하는 방법에 대한 나의 생각은 내가해야 할 노력은 무엇
(I는이 경우에 작동하는 코드의 예를 보았다)
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
나는 @가 무엇을하는지 정확히 이해하지 못합니다. 전체 클래스에서 작동하는 변수를 만드는 것이라고 생각했습니다. 또한 @title이 @book (rspec 테스트에서 지정됨) 대신 사용되는 이유가 궁금합니다.
또한, 나는 코드의 "이전 할"부분 고군분투하고 @book를 요구하는 이유 =
Book.new
는 또한 & &와 부분뿐만 아니라 혼동된다. 왜 @title = title.capitalize를 넣는 것이 좋지 않은가!내가이 게시물이 길다는 것을 알고 있다면 이해가되지 않는다면이 사실을 분명히 밝혀 낼 수 있습니다.
여기서'capitalize'의 느낌표가 아닌 버전을 사용합니다. 느낌표로 표시된 버전은 전달 된 인수를 수정하여 이상한 버그를 유발할 수 있습니다 :'title = "hello"; book = Book.new (title); title # => "Hello"' – hdgarrood
또한, 제안 사항 : 클래스, 메시지 및 인스턴스 변수에 대해 머리 숙여지기 전까지는 rspec에 대해 걱정할 필요가 없습니다. – hdgarrood
@hdgarrood 현재 rspec 튜토리얼을 통해 루비를 배우고 있습니다. 필자는 독서 과제를 할당했으며 그들이 수행하기를 원하는 코딩은 Test First 튜토리얼입니다. –