幻想森林

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

[讨论]一个适用范围很窄的脚本件.

[复制链接]

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
发表于 2007-2-23 20:47:23 | 显示全部楼层 |阅读模式
在做梦幻麻将馆时,将一个大类切成了十来个部分,又是断断续续进行,加之上了岁数,脑袋不灵光,总装不下写的那些方法都放在哪里,于是弄了这个东西.
class Object
  
  def find_name(*args)
      p find_method(*args)                 
  end  
   
  def find_method(*method_names)     
      return self.singleton_methods(false)[/COLOR].inject([]) do |result, method|     
          result.push(method.to_s) if match?(method, method_names)     
          result     
      end   
  end
   
  def match?(element, array)     
     array.each do |a|     
       a = a.to_s if a.instance_of?(Object) [/COLOR]   
       return true if element.match(a)     
     end      
     return false   
  end            

end

将find_name(*args)方法放置在类或模块内的任何非嵌套位置,即可依照参数查找所处位置以上该类的方法.
例如放在类的最开始会找不到任何方法,放在类最后可找到所有方法。

其实中红字的singleton_methods是查找类型,可搜索到特殊类方法,false指不包含超类,因为还不是很理解超类的概念,所以加了false.
可以换成
public_methods
private_methods
protected_methods
instance_variables
instance_methods
等进行过滤,例如instance_methods可以将self.型的特殊类方法过滤掉.

蓝字为匹配对象,我写了Object,因为其是所有类的父类。

find_name(*args)参数利用正则表达式匹配方法名,进行有目的的筛选,以及模糊搜索
例如
find_name /\w/ 可匹配的所有方法
find_name /game/ 可匹配的所有名称包含game的方法

这种方式与直接用instance_methods之类的语句相比,可断点查询,可模糊搜索,非常适合我这种间接性记忆缺失症患者进行搜索......
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复

使用道具 举报

2

主题

94

帖子

1万

积分

⑧专业

S星王

积分
19631
发表于 2007-2-23 21:27:47 | 显示全部楼层
竟然有这种东西出现.....
所以说,写注释和写文档是很重要的~~
回复 支持 反对

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2007-2-23 23:36:09 | 显示全部楼层
*XXX看起来很像C++里面的Pointer……
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-2-24 01:09:26 | 显示全部楼层
可Ruby并米指针...
*XXX记得是将数组的元素依次传递....
[s:4]  [s:4] ...难道杀鸡君已经开始C++了
回复 支持 反对

使用道具 举报

38

主题

3468

帖子

1

积分

超级版主

传说中的Bunny火神~!

Rank: 8Rank: 8

积分
1
发表于 2007-2-24 01:18:05 | 显示全部楼层
引用第3楼Saiholmes2007-02-24 01:09发表的:
可Ruby并米指针...
*XXX记得是将数组的元素依次传递....
[s:4]  [s:4] ...难道杀鸡君已经开始C++了

被强迫学习了。
我突然发现,我是一个很幸运的好人。老婆真好~ 点我进入JQ(激情)教程范例收集!
回复 支持 反对

使用道具 举报

88

主题

4889

帖子

38万

积分

版主

年度最佳拖稿王

Rank: 7Rank: 7Rank: 7

积分
386227

声命组铜赏

QQ
发表于 2007-2-24 06:56:57 | 显示全部楼层
这个....是用来做什么的?
回复 支持 反对

使用道具 举报

79

主题

617

帖子

6150

积分

⑦老手

暗夜下可怜人

积分
6150
 楼主| 发表于 2007-2-24 10:19:43 | 显示全部楼层
引用第5楼XTLCME2007-02-24 06:56发表的:
这个....是用来做什么的?

查询
希望破灭是因为发现真实,宁可背负罪孽也要维护爱我之人,永远的娜乌西卡!!!!!!
回复 支持 反对

使用道具 举报

好人卡的 该用户已被删除
发表于 2007-2-24 22:08:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-25 04:46 , Processed in 0.012213 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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