Hello,
how does this work?
class A
b = [1, 2,3]
end
=> [1, 2, 3]
Is b an instance variable? class variable? how would I access b from
outside the class?
thanks
Hello,
how does this work?
class A
b = [1, 2,3]
end
=> [1, 2, 3]
Is b an instance variable? class variable? how would I access b from
outside the class?
thanks
On 2010-05-18 09:38:14 -0400, poseid said:
Hello,
how does this work?
thanks
Erh, not that way. Sorry.
You could have
class A
@b = [1,2,3]
end
Which stores the array in a class-level instance variable.
This other one
class A
@@b = [1,2,3]
end
stores the array in a class variable.
An instance variable would (or could, anyway) be used like this
class A
def initialize
@b = [1,2,3]
end
#accessor methods
def b
@b
end
def b= (value)
@b = value
end
end
Also, you can shorten the accessor methods to
class A
attr_accessor :b
def initialize
@b = [1,2,3]
end
end
On 18 Mai, 16:00, MrZombie [email protected] wrote:
This other one
class A
@@b = [1,2,3]
endstores the array in a class variable.
Hm… ok, this is more or less what I expected as well, when reading
code employing instance/class variables. But how do I understand the
(old) code from a book on Rails:
class T < ActionView::Helpers::FormBuilder
field_helpers.each do |s|
src = <<-END_SRC
def #{s}(field, options = {})
@template.content_tag( … )
end
END_SRC
class_eval src, FILE, LINE
end
end
To me it seems that field_helpers is an instance variable, but there
is no @ nor @@ used
thanks for feedback
On Tue, May 18, 2010 at 8:15 AM, poseid [email protected]
wrote:
   END_SRC
 class_eval src, FILE, LINE
 end
endTo me it seems that field_helpers is an instance variable, but there
is no @ nor @@ usedthanks for feedback
field_helpers is neither a class nor an instance variable… it is a
method that happens to return an array (or similar class that has a
.each).
-Jonathan N.
On Tuesday, May 18, 2010 08:40:08 am poseid wrote:
=> [1, 2, 3]
Is b an instance variable? class variable?
Nope. It’s a local variable. That means it disappears as soon as the
interpreter hits that ‘end’ statement.
how would I access b from
outside the class?
You could create a class variable, but I’d recommend an instance
variable on
the class instead:
class A
class << self
attr_accessor :b
end
self.b = [1, 2, 3]
end
p A.b
On 2010-05-18 15:53:02 +0100, poseid said:
Which stores the array in a class-level instance variable.
Hm… ok, this is more or less what I expected as well, when reading
class_eval src, FILE, LINE
end
endTo me it seems that field_helpers is an instance variable, but there
is no @ nor @@ usedthanks for feedback
I’m not familiar with the old actionview methods, but it strikes me
that the most likely reason is that field_helpers is a class method
that returns an array of strings. Sort of like
def self.field_helpers
%w(list of desired words)
end
or something to that effect. You could check that by grepping the
methods that T has.
Mac
On 18 Mai, 16:00, MrZombie [email protected] wrote:
This other one
class A
@@b = [1,2,3]
endstores the array in a class variable.
Hm… ok, this is more or less what I expected as well, when reading
code employing instance/class variables. But how do I understand the
(old) code from a book on Rails:
class T < ActionView::Helpers::FormBuilder
field_helpers.each do |s|
src = <<-END_SRC
def #{s}(field, options = {})
@template.content_tag( … )
end
END_SRC
class_eval src, FILE, LINE
end
end
To me it seems that field_helpers is an instance variable, but there
is no @ nor @@ used
thanks for feedback
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