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的???
这个有简单的方法么? a = a.new
a.instance_variables 可以获得所有实例变量名的列表
a.a1.kind_of?Integer 判断类型
然后再判断>0 没有简便方法。。。此刻我内牛满面T_T 或许会有,只是我不知道,我必竟不是主要学ruby的。
你等高人出现吧。 没简单的方法的话自己写一个以后不就简单了么……||||
例如这样
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
看起来也没复杂到哪里去…… 原来只能这样。。。。。谢谢各位
页:
[1]