secondsen 发表于 2009-12-20 00:27:19

ruby怎么判断某类的实例变量有多少是大于0的?

RT...又想出来问题了。。
例如

class A
attr_accessor :a1
attr_accessor :a2
attr_accessor :a3
attr_accessor :af
attr_accessor :ad
attr_accessor :as
def initialize
    @a1 = 1
    @a2 = -1
    @a3 = 4
    @af = true
    @ad = "123"
    @as = []
end
end

就是说,实例变量不一定就是整型的。。也有别的或者是字符串,或者是bool等等。。。
怎么判断这个类有多少个实例变量是个数(Integer or Float) 还要是>0的???
这个有简单的方法么?

shawind 发表于 2009-12-20 11:11:03

a = a.new
a.instance_variables 可以获得所有实例变量名的列表
a.a1.kind_of?Integer 判断类型
然后再判断>0

secondsen 发表于 2009-12-20 13:33:48

没有简便方法。。。此刻我内牛满面T_T

shawind 发表于 2009-12-20 13:53:39

或许会有,只是我不知道,我必竟不是主要学ruby的。
你等高人出现吧。

rednaxela 发表于 2009-12-22 23:51:56

没简单的方法的话自己写一个以后不就简单了么……||||

例如这样
class Object
def number_of_instance_variables_over_zero
    self.instance_variables.
      map {|n| self.instance_eval n }.
      select {|v| .any? {|c| v.kind_of?(c) && v > 0 } }.
      length
end
end
看起来也没复杂到哪里去……

secondsen 发表于 2009-12-23 00:33:25

原来只能这样。。。。。谢谢各位
页: [1]
查看完整版本: ruby怎么判断某类的实例变量有多少是大于0的?