幻想森林

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

[其他] RUBY 类里面没定义方法,调用不报错怎么搞

[复制链接]

550

主题

9117

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
发表于 2009-3-21 17:02:34 | 显示全部楼层 |阅读模式
比如

class A
end

a = A.new
a.b

这没有 def b
我想让它不报错,返回一个nil 接着运行,该怎么做呢?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-3-21 17:35:02 | 显示全部楼层
基本上这样就行:
  1. class A
  2.   def method_missing(symbol, *args)
  3.     nil
  4.   end
  5. end
复制代码

因为Ruby的类是开放的,所以无论之前A的定义如何,你都直接在后面加这么一段代码就能在之后随便调用什么不存在的方法然后得到nil
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-3-21 17:39:32 | 显示全部楼层
又受教啦 谢谢
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-3-21 17:45:38 | 显示全部楼层
咪~
另外我想说,如果你要定义一个空的类,不一定要写两行……(纯风格问题
可以这样:class A; end
也可以这样:A = Class.new
等价的。
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-3-21 17:51:40 | 显示全部楼层
我就看这这个不习惯。。。。个人喜好不同吧
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

8

主题

215

帖子

2223

积分

⑥精研

积分
2223
发表于 2009-3-21 17:57:40 | 显示全部楼层
呵呵。各人风格确实很不同。很多库的作者都喜欢定义方法时不写括号:
def method_missing symbol, *args
  nil
end
我在这种时候就宁可看到括号了

在写啥呐?
回复 支持 反对

使用道具 举报

550

主题

9117

帖子

214748万

积分

超级版主

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

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-3-21 18:43:05 | 显示全部楼层
其实没写什么,只是突然想到了,又不会。。。汗。。。还需要学习。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-3 07:51 , Processed in 0.031292 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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