S
Sask Khan
Hey guys,
Im new to Ruby and totally new to the concept of Object Oriented
Programming.
At the moment, am going through Pragmatic Programmer’s Ruby and even
though am finding it to awesome, I have a few questions
Below is the exercise we are going through in the chapter ‘Classes,
Object & Variables’:
classBookInStock
attr_reader :isbn, rice
Def initialize(isbn,price)
@isbn = isbn
@price = Float(price)
end
Def price=(new_price)
@price = new_price
end
#...
End
book=BookInStock.new("isbn1",33.80)
Puts "ISBN = #{book.isbn}"
puts"Price = #{book.price}"
book.price = book.price*0.75 #discount price
puts"Newprice= #{book.price}"
Im a bit confused about the output syntax using ‘Puts’. Now, I read and
understand that the variable ‘@isbn’ is not the same as ‘isbn’ variable,
same for the ‘:isbn‘ constant, all three being different to eachother.
The variable with ‘@’ is available outside the place where it is defined
so why are we not using the following code:
Puts “ISNB = #{book.@isbn}â€
Instead of (as per the code in the exercise above)
puts “isbn= #{book.isbn}â€
The reason I think we should be using the variable with @ is because the
one without @ is not accessible outside where it is defined, right? And
as the two variables (@isbn, isbn) are different to each other. Also,
how is the constant ‘:isbn’ in ‘attr_reader’ connected to the ‘isbn’
variable when we didn’t connect them?
Any help would be most appreciated.
Im new to Ruby and totally new to the concept of Object Oriented
Programming.
At the moment, am going through Pragmatic Programmer’s Ruby and even
though am finding it to awesome, I have a few questions
Below is the exercise we are going through in the chapter ‘Classes,
Object & Variables’:
classBookInStock
attr_reader :isbn, rice
Def initialize(isbn,price)
@isbn = isbn
@price = Float(price)
end
Def price=(new_price)
@price = new_price
end
#...
End
book=BookInStock.new("isbn1",33.80)
Puts "ISBN = #{book.isbn}"
puts"Price = #{book.price}"
book.price = book.price*0.75 #discount price
puts"Newprice= #{book.price}"
Im a bit confused about the output syntax using ‘Puts’. Now, I read and
understand that the variable ‘@isbn’ is not the same as ‘isbn’ variable,
same for the ‘:isbn‘ constant, all three being different to eachother.
The variable with ‘@’ is available outside the place where it is defined
so why are we not using the following code:
Puts “ISNB = #{book.@isbn}â€
Instead of (as per the code in the exercise above)
puts “isbn= #{book.isbn}â€
The reason I think we should be using the variable with @ is because the
one without @ is not accessible outside where it is defined, right? And
as the two variables (@isbn, isbn) are different to each other. Also,
how is the constant ‘:isbn’ in ‘attr_reader’ connected to the ‘isbn’
variable when we didn’t connect them?
Any help would be most appreciated.