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’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
On Sat, Jun 12, 2010 at 12:33 AM, Ntys Dd [email protected] wrote:
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
p (class << Bar ; self ; end).ancestors
Bar.extend Bar
p (class << Bar ; self ; end).ancestors
class methods
def Bar.foo
puts “doing something”
super
bye
end
Bar.foo
On 06/12/2010 07:33 AM, Ntys Dd wrote:
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
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