Forum: Italian Ruby user group Fwd: Iniettare metodi statici

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
30cb10b258fc90a05e97d63380133bf0?d=identicon&s=25 Massimiliano Mirra - ruby-it list (Guest)
on 2006-04-05 10:06
(Received via mailing list)
> Ma io vorrei che fosse possibile chiamare 'metodo_per_a_e_c' senza fare il
> new degli oggetti, tipo:
>
> AAA.a.metodo_per_a_e_c e BBB.metodo_per_a_e_c
>
> Avete idea di come fare? Ho spulciato il pickaxe ma non sono riuscito a
> trovare la risposta al mio dubbio...

tmp> cat static.rb
module CCC
  def metodo_per_a_e_c
    p 'chiamato metodo_per_a_e_c!'
  end
end

class AAA
  extend CCC
end

class BBB
  class << self
    include CCC
  end
end

AAA.metodo_per_a_e_c
BBB.metodo_per_a_e_c

tmp> ruby static.rb
"chiamato metodo_per_a_e_c!"
"chiamato metodo_per_a_e_c!"


Buona giornata. :-)
Massimiliano

--
blog: http://blog.hyperstruct.net
sw: http://dev.hyperstruct.net, http://repo.hyperstruct.net
B1c45f949749d001b4b9a75f50f69d38?d=identicon&s=25 Paolo Donà (Guest)
on 2006-04-05 10:12
(Received via mailing list)
Visto che siete preparati, vi rompo ancora.. :-)
Ci sono differenze tra i due approcci?

class AAA
  extend CCC
end

class AAA
  class << self
    include CCC
  end
end
C01072ccffb1f2d23f8b5f686e5b106a?d=identicon&s=25 gabriele renzi (Guest)
on 2006-04-05 10:55
(Received via mailing list)
--- Paolo Donà <paolo.dona@gmail.com> ha scritto:

>   end
> end

In breve: sono identici.

In lungo: non lo sapevo neanche io, ma siccome mi era
venuto il dubbio ho fatto una piccola indagine: se
guardi dentro eval.c dovresti trovare la definizione
di #extend , che in pratica richiama
Object#extend_object e Module#extended per ognuno
degli argomenti passati.

#extend_object a sua volta non fa altro che
rb_include_module(rb_singleton_class(obj), module)

Sempre se non ho capito male, cosa che è
plausibilissima :)

--
icq:  #69488917
blog: http://riffraff.blogsome.com





___________________________________
Yahoo! Messenger with Voice: chiama da PC a telefono a tariffe esclusive
http://it.messenger.yahoo.com
This topic is locked and can not be replied to.