7stud2
(7stud --)
1 August 2013 22:51
1
Hi
is anyone able to to explain to me why :foo is in the array below?
My understanding of the docs would suggest that calling
public_methods(false) should only include methods defined on the class
itself?
class A
def self.foo
"FOO"
end
end
class B < A
end
p B.public_methods(false)
=> [:foo, :allocate, :new, :superclass]
(Eval - latest in tech, AI, software, Networking, Marketing & more )
Thanks
Steve
···
--
Posted via http://www.ruby-forum.com/\ .
In the defination of class B, the part “< A" tells ruby that class B
is inheriting from class A.
When class B inherits from class A, all the properties(methods,
instance and class variables) in class A are available to class B
Ex:
class A
def self.foo
"FOO"
end
end
class B < A
end
class C < B
end
C.public_methods(false)
[:foo, :allocate, :new, :superclass]
When we inherit class B in C will result the same...
Thanks,
Ganesh Kaliannan
···
On Fri, Aug 2, 2013 at 4:21 AM, Steve S. <lists@ruby-forum.com> wrote:
Hi
is anyone able to to explain to me why :foo is in the array below?
My understanding of the docs would suggest that calling
public_methods(false) should only include methods defined on the class
itself?
class A
def self.foo
"FOO"
end
end
class B < A
end
p B.public_methods(false)
=> [:foo, :allocate, :new, :superclass]
(Eval - latest in tech, AI, software, Networking, Marketing & more )
Thanks
Steve
--
Posted via http://www.ruby-forum.com/\ .
7stud2
(7stud --)
2 August 2013 07:37
3
The part I don't understand is behaviour of public_methods.
From the docs:
"
If the all parameter is set to false, only those methods in the receiver
will be listed.
"
So, from my understanding, in my example, the Inheritance chain for A
is:
"A < Object"
And B therefore is:
"B < A < Object"
What I don't understand is why A.public_methods(false) excludes the
public_methods defined on Object, but B.public_methods(false) INCLUDES
the public methods defined on A.
Thanks
···
--
Posted via http://www.ruby-forum.com/ .
7stud2
(7stud --)
5 August 2013 05:40
4
It seems that A.public_methods(false) does include all the public
methods.
···
--
Posted via http://www.ruby-forum.com/ .