Both of these code examples for making class properties don't work
although they are pretty much straight out of the book "Programming
Ruby". What I am doing wrong here?
error is: undefined method `firstName' for #<User:0xb7f76b24
@firstName="Newton"> (NoMethodError)
···
----------------------
class User
attr_writer :firstName
def initialize(firstName) @firstName = firstName
end
end
user = User.new('Hal')
user.firstName = 'Newton'
print user.firstName
--------------------------------
class User
def firstName=(newFirstName) @firstName = newFirstName
end
def initialize(firstName) @firstName = firstName
end
end
user = User.new('Hal')
user.firstName = 'Newton'
print user.firstName
Both of these code examples for making class properties don't work
although they are pretty much straight out of the book "Programming
Ruby". What I am doing wrong here?
error is: undefined method `firstName' for #<User:0xb7f76b24
@firstName="Newton"> (NoMethodError)
----------------------
you didn't create an attribute reader:
attr_accessor :firstName - creates both reader and writer
attr_writer :firstName - creates a writer
attr_reader :firstName - creates a reader (the one that you need)
'attr_writer :firstName' only creates the 'firstName=' method just
like 'attr_reader :firstName' will only create the 'firstName' method.
What you need is 'attr_accessor :firstName' which creates both.
Farrel
···
On 17/09/06, Edward <edward@tanguay.info> wrote:
Both of these code examples for making class properties don't work
although they are pretty much straight out of the book "Programming
Ruby". What I am doing wrong here?
error is: undefined method `firstName' for #<User:0xb7f76b24
@firstName="Newton"> (NoMethodError)
----------------------
class User
attr_writer :firstName
def initialize(firstName) @firstName = firstName
end
end
user = User.new('Hal')
user.firstName = 'Newton'
print user.firstName
--------------------------------
class User
def firstName=(newFirstName) @firstName = newFirstName
end
def initialize(firstName) @firstName = firstName
end
end
user = User.new('Hal')
user.firstName = 'Newton'
print user.firstName
Both of these code examples for making class properties don't work
although they are pretty much straight out of the book "Programming
Ruby". What I am doing wrong here?
error is: undefined method `firstName' for #<User:0xb7f76b24
@firstName="Newton"> (NoMethodError)
----------------------
class User
attr_writer :firstName
Just an additional note: the usual conventions for method and variable identifiers in Ruby is to separate words by underscore and use camel case only for class and module names. So that would rather be