class A
attr_accessor :size
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
@size = 0
end
def size
return @size / 2
end
end
$a = A.new
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
p $a.size
class A
attr_accessor :size
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
@size = 0
end
def size
return @size / 2
end
end
$a = A.new
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
p $a.size
$sm=[]
class Class
def sm(sym)
self.class_eval do
return if (@@__smed||=[]).include?(sym)
@@__smed.push sym
alias :"old_#{sym}" :"#{sym}"
define_method sym do |*args, &block|
$sm << [self, sym, *args]
old = $sm[-1]
old.push self.send(:"old_#{sym}", *args, &block)
old[-1]
end
end
end
end
$sm=[]
class A
attr_accessor :size
def initialize
@size = 0
end
def size
return @size / 2
end
sm :size
sm :size=
end
$a = A.new
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
p $a.size
puts "\nsm result: "
puts $sm.map { |j| j.join "\t" }.join "\n"
$sm=[]
class Class
def sm(sym)
self.class_eval do
return if (@@__smed||=[]).include?(sym)
@@__smed.push sym
alias :"old_#{sym}" :"#{sym}"
define_method sym do |*args, &block|
$sm << [self, sym, *args]
old = $sm[-1]
old.push self.send(:"old_#{sym}", *args, &block)
old[-1]
end
end
end
end
$sm=[]
class A
attr_accessor :size
def initialize
@size = 0
end
def size
return @size / 2
end
sm :size
sm :size=
end
$a = A.new
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
$a.size += 1
p $a.size
puts "\nsm result: "
puts $sm.map { |j| j.join "\t" }.join "\n"