ruby – 将相同的方法添加到多个类中
发布时间:2020-12-16 21:25:09 所属栏目:百科 来源:网络整理
导读:我有一些代码来计算数字的第n个根.现在,该方法仅适用于Fixnum,因为我在Fixnum类中定义了它.这样做很容易 class Float #same code as was in Fixnumend 但这似乎是不必要的.我不知道如何动态调用类.我试过了: classes = [Fixnum,Float]classes.each do |x| x
我有一些代码来计算数字的第n个根.现在,该方法仅适用于Fixnum,因为我在Fixnum类中定义了它.这样做很容易
class Float #same code as was in Fixnum end 但这似乎是不必要的.我不知道如何动态调用类.我试过了: classes = [Fixnum,Float] classes.each do |x| x.instance_eval do def root(pow) return self ** (1/pow.to_f) end end end 但那没用.我该怎么做呢? 解决方法
类层次结构的相关部分如下所示:
> Numeric > Integer > Fixnum > Float 因此,将您的更改修补为数字以立即覆盖它们: class Numeric def root(pow) return self ** (1/pow.to_f) end end 然后你可以做这些事情: >> 11.root(2) # Fixnum => 3.3166247903554 >> 2.18.root(3) # Float => 1.296638256974172 >> Rational(23,42).root(6) # Rational => 0.9045094132598528 >> 2**1000.root(42) # Bignum => 2.2638347236157763 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |