B
Bertram Scharpf
Hi,
as I notice there is a difference between `class_eval' called
with a block or with a string. Why?
Bertram
--------------------
VERSION = :braces
module M
def self.included c
case VERSION
when :braces then c.class_eval {@@m = rand}
when :quotes then c.class_eval "@@m = rand"
end
end
end
class C ; @@m = "M" ; def d ; puts @@m ; end ; end
class D ; @@m = "M" ; def d ; puts @@m ; end ; end
class C ; puts @@m ; end
class D ; puts @@m ; end
C.new.d
D.new.d
class C ; include M ; end
class D ; include M ; end
class C ; puts @@m ; end
class D ; puts @@m ; end
C.new.d
D.new.d
as I notice there is a difference between `class_eval' called
with a block or with a string. Why?
Bertram
--------------------
VERSION = :braces
module M
def self.included c
case VERSION
when :braces then c.class_eval {@@m = rand}
when :quotes then c.class_eval "@@m = rand"
end
end
end
class C ; @@m = "M" ; def d ; puts @@m ; end ; end
class D ; @@m = "M" ; def d ; puts @@m ; end ; end
class C ; puts @@m ; end
class D ; puts @@m ; end
C.new.d
D.new.d
class C ; include M ; end
class D ; include M ; end
class C ; puts @@m ; end
class D ; puts @@m ; end
C.new.d
D.new.d