找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4365|回复: 5

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

[复制链接]
发表于 2009-12-20 00:27:19 | 显示全部楼层 |阅读模式
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的???
这个有简单的方法么?
发表于 2009-12-20 11:11:03 | 显示全部楼层
a = a.new
a.instance_variables 可以获得所有实例变量名的列表
a.a1.kind_of?Integer 判断类型
然后再判断>0
 楼主| 发表于 2009-12-20 13:33:48 | 显示全部楼层
没有简便方法。。。此刻我内牛满面T_T
发表于 2009-12-20 13:53:39 | 显示全部楼层
或许会有,只是我不知道,我必竟不是主要学ruby的。
你等高人出现吧。
发表于 2009-12-22 23:51:56 | 显示全部楼层
没简单的方法的话自己写一个以后不就简单了么……||||

例如这样
  1. class Object
  2.   def number_of_instance_variables_over_zero
  3.     self.instance_variables.
  4.       map {|n| self.instance_eval n }.
  5.       select {|v| [Integer, Float].any? {|c| v.kind_of?(c) && v > 0 } }.
  6.       length
  7.   end
  8. end
复制代码

看起来也没复杂到哪里去……
 楼主| 发表于 2009-12-23 00:33:25 | 显示全部楼层
原来只能这样。。。。。谢谢各位
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-10-30 21:36 , Processed in 0.010568 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表