hello folks!
Is there a way to list methods only for specific class, i.e., not
inherited?
Thank you!
hello folks!
Is there a way to list methods only for specific class, i.e., not
inherited?
Thank you!
On Mon, Jun 15, 2009 at 12:38 AM, Le Sa [email protected] wrote:
hello folks!
Is there a way to list methods only for specific class, i.e., not
inherited?Thank you!
Posted via http://www.ruby-forum.com/.
object.public_methods(false)
Hope this helps!
On 15.06.2009 07:38, Le Sa wrote:
Is there a way to list methods only for specific class, i.e., not
inherited?
robert
No problem!
instance_methods(false) is fine, because I won’t be able to use private
methods anyway xD
Le Sa wrote:
I would like to list ms1 and ms2, but thanks for the help!
I would like to list ms1 and ms2, but thanks for the help!
class Person
def mp1() end
end
class Student < Person
def ms1() end
def ms2() end
private :ms2
end
Student.public_methods(false).each {|m|puts m}
puts “************\n”
Student.instance_methods(false).each{|m|puts m}
=begin
OUTPUT IS:
yaml_tag_subclasses?
allocate
to_yaml
superclass
new
ms1
=end
On Mon, Jun 15, 2009 at 10:27 AM, Le Sa [email protected] wrote:
private :ms2
to_yaml
superclass
new
ms1
=endPosted via http://www.ruby-forum.com/.
Try:
Student.new.public_methods(false) + Student.new.private_methods(false)
=> [“ms1”, “ms2”]
2009/6/15 Daniel R. [email protected]:
Try:
Student.new.public_methods(false) + Student.new.private_methods(false)
=> [“ms1”, “ms2”]
Why do you folks create instances? You can do this as well:
cl = any_class
cl.instance_methods(false) - cl.private_instance_methods
Kind regards
robert
On Jun 16, 2009, at 12:04 AM, Robert K. wrote:
cl.instance_methods(false) - cl.private_instance_methods
Kind regards
robert
Often, I’m most interested in methods unique to a given class and not
those inherited from, say, Object:
(Array.instance_methods - Array.private_instance_methods -
Object.public_methods).sort
And I sort them for easier reference. Don’t know if this adds any
information…
Steve R. wrote:
Often, I’m most interested in methods unique to a given class and not
those inherited from, say, Object:(Array.instance_methods - Array.private_instance_methods -
Object.public_methods).sortAnd I sort them for easier reference. Don’t know if this adds any
information…
If you really want unique to the class, and the class may have a more
complex object hieararchy than just inheriting from Object, why not
something like:
(MyClass.methods - MyClass.superclass.methods)
I think that’ll work, although how included modules in MyClass are
treated should be tested experimentally. I think it’ll still work cause
of the magic anonymous singleton class thing ruby uses for module
mix-ins and such.
The trick in both Steve’s and my attempt is the really useful ‘-’
operator/method on Arrays, which does array difference. So useful! See
also ‘&’ for array intersection. Can save you a lot of hacky code if you
remember they’re there.
Jonathan
On Mon, Jun 15, 2009 at 5:27 PM, Le Sa[email protected] wrote:
private :ms2
end
The closest I have to offer is this:
Student.new.methods - Object.instance_methods
=> [“ms1”, “mp1”]
so many replies hehe. you are amazing!!!
thank you all!!!
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