阅读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 -- 搜索功能的后台管理技巧