From: Ntys Dd on 12 Jun 2010 01:33 it's like this ......................... module Bar def foo puts 'hello' end def bye puts 'bye' end end def Bar.foo #Do something #I want to call foo now #And call bye #... end ......................... is there anything i can to to solve the problem -- Posted via http://www.ruby-forum.com/.
From: Josh Cheek on 12 Jun 2010 02:23 [Note: parts of this message were removed to make it a legal post.] On Sat, Jun 12, 2010 at 12:33 AM, Ntys Dd <ntysdd(a)gmail.com> wrote: > it's like this > ......................... > module Bar > def foo > puts 'hello' > end > def bye > puts 'bye' > end > end > > def Bar.foo > #Do something > #I want to call foo now > #And call bye > #... > end > ......................... > > is there anything i can to to solve the problem > -- > Posted via http://www.ruby-forum.com/. > > I won't advocate this as a solution, but it does seem to meet your criterion. module Bar def foo puts 'hello' end def bye puts 'bye' end end # Extends Bar's singleton class with its own instance methods p (class << Bar ; self ; end).ancestors Bar.extend Bar p (class << Bar ; self ; end).ancestors # since Bar is now an ancestor of itself, we can call super from within class methods def Bar.foo puts "doing something" super bye end Bar.foo
From: Robert Klemme on 12 Jun 2010 04:59 On 06/12/2010 07:33 AM, Ntys Dd wrote: > it's like this > ........................ > module Bar > def foo > puts 'hello' > end > def bye > puts 'bye' > end > end > > def Bar.foo > #Do something > #I want to call foo now > #And call bye > #... > end > ........................ > > is there anything i can to to solve the problem It does not really make sense since the first #foo you define is an instance method while the latter is a class method. When you have a class you do not have an instance available so on what instance would you intend to invoke #foo on? It can only work the other way round: you have the instance method invoking the class (module) method. module Bar def self.foo puts "module method" end def foo puts "instance method" Bar.foo end end irb(main):011:0> o = Object.new.extend Bar => #<Object:0x910a418> irb(main):012:0> o.foo instance method module method => nil Of course you can also do module Bar def uber_foo foo bye end end Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
|
Pages: 1 Prev: require command problem Next: ocra Tk "_invoke_without_enc" |