Please see this code below. It will get “can’t convert nil to string
error”. Why can’t the @name be assigned? I have set the @name = “world”.
class Hello
@name=“world”
def say
puts "Hello "+@name
end
end
h=Hello.new
h.say
Please see this code below. It will get “can’t convert nil to string
error”. Why can’t the @name be assigned? I have set the @name = “world”.
class Hello
@name=“world”
def say
puts "Hello "+@name
end
end
h=Hello.new
h.say
On Tuesday 02 September 2008, Zhao Yi wrote:
h.say
@name is an instance variable of the Hello object, not of instances of
Hello,
such as h. To create an instance variable of instances of Hello, you
need to
assign it a value in an instance method. Usually, this is done in the
initialize method:
class Hello
def initialize
@name = “Hello”
end
def say
puts “Hello” + @name
end
end
h = Hello.new
h.say
I hope this helps
Stefano
Stefano C. wrote:
On Tuesday 02 September 2008, Zhao Yi wrote:
h.say
@name is an instance variable of the Hello object, not of instances of
Hello,
such as h. To create an instance variable of instances of Hello, you
need to
assign it a value in an instance method. Usually, this is done in the
initialize method:class Hello
def initialize
@name = “Hello”
enddef say
puts “Hello” + @name
endend
h = Hello.new
h.sayI hope this helps
Stefano
If the name is Hello object instance, it should be accessed by Hello
object, right? see this code:
class Hello
@name=“world”
def name
@name
end
end
h=Hello.new
puts h.name
It will print “nil” which means the first line of this class
@name=“world” is ignored.
Am I right?
Zhao Yi wrote:
Please see this code below. It will get “can’t convert nil to string
error”. Why can’t the @name be assigned? I have set the @name = “world”.class Hello
@name=“world”
def say
puts "Hello "+@name
end
end
h=Hello.new
h.say
Try it this way:
class Hello
@@name=“world”
def say
puts "Hello "+@@name
end
end
h=Hello.new
h.say
On Tue, Sep 2, 2008 at 2:46 PM, Zhao Yi [email protected] wrote:
class Hello
class Hello
@name=“world” is ignored.
Am I right?
It’s not ignored. When you see @name=“something”, you have to think
which object is self at that point. That object will have an instance
variable
called @name with that value. The thing is that classes are also
objects (instances
of class Class), and can have instance variables as any other object.
This:
class Hello
@name = “hello’s name”
end
creates an instance variable of the object Hello. To achieve what you
want you need to do as Stefano showed: create the @name instance
variable
in a place where self is the instance of the Hello class: inside a
method, like initialize.
Jesus.
This is really different with Java at this point.
HI –
On Wed, 3 Sep 2008, Zhao Yi wrote:
This is really different with Java at this point.
Yes – it’s a totally different language. Enjoy it
David
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs