寫的一個inter類模仿ruby整數的行為
我們知道ruby中對於整數的[],[]=,<<,>>操作是針對於二進製的值來運算的。
我現在寫一個針對十進製數操作的類,擁有整數的所有方法,如下:
class InterEx def initialize(val=0) @val=val end def to_s @val.to_s end def [](idx) self.to_s[idx].to_i end def []=(idx,val) s=self.to_s s[idx] = val.to_s @val=s.to_i end def coerce(other) [other,@val] end def <<(v) return InterEx.new(@val) if v==0 InterEx.new(@val*10**v) end def >>(v) return InterEx.new(@val) if v==0 s=self.to_s s=s[0..(-1*v-1)] InterEx.new(s.to_i) end def method_missing(mtd,*args) InterEx.new(@val.send mtd,*args) end end
ruby還提供了delegate機製便於代理一個類,比如要想代理Fixnum類,
可以這麼寫:
require 'delegate'
class InterEx<DelegateClass(Fixnum)
...
end
最後更新:2017-04-02 05:21:05