幻想森林

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

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

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 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的???
这个有简单的方法么?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2009-12-20 11:11:03 | 显示全部楼层
a = a.new
a.instance_variables 可以获得所有实例变量名的列表
a.a1.kind_of?Integer 判断类型
然后再判断>0
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-12-20 13:33:48 | 显示全部楼层
没有简便方法。。。此刻我内牛满面T_T
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2009-12-20 13:53:39 | 显示全部楼层
或许会有,只是我不知道,我必竟不是主要学ruby的。
你等高人出现吧。
え~え~お!!!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 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
复制代码

看起来也没复杂到哪里去……
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-12-23 00:33:25 | 显示全部楼层
原来只能这样。。。。。谢谢各位
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 02:05 , Processed in 0.028533 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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