閱讀360 返回首頁    go 阿裏雲 go 技術社區[雲棲]


寫的一個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

  上一篇:go magento 開發 -- 深入理解Magento第六章 – 高級Magento模型
  下一篇:go magento -- 搜索功能的後台管理技巧