secondsen 发表于 2009-3-21 17:02:34

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

比如

class A
end

a = A.new
a.b

这没有 def b
我想让它不报错,返回一个nil 接着运行,该怎么做呢?

rednaxela 发表于 2009-3-21 17:35:02

基本上这样就行:
class A
def method_missing(symbol, *args)
    nil
end
end
因为Ruby的类是开放的,所以无论之前A的定义如何,你都直接在后面加这么一段代码就能在之后随便调用什么不存在的方法然后得到nil

secondsen 发表于 2009-3-21 17:39:32

又受教啦 谢谢

rednaxela 发表于 2009-3-21 17:45:38

咪~
另外我想说,如果你要定义一个空的类,不一定要写两行……(纯风格问题
可以这样:class A; end
也可以这样:A = Class.new
等价的。

secondsen 发表于 2009-3-21 17:51:40

我就看这这个不习惯。。。。个人喜好不同吧

rednaxela 发表于 2009-3-21 17:57:40

呵呵。各人风格确实很不同。很多库的作者都喜欢定义方法时不写括号:
def method_missing symbol, *args
nil
end
我在这种时候就宁可看到括号了

在写啥呐?

secondsen 发表于 2009-3-21 18:43:05

其实没写什么,只是突然想到了,又不会。。。汗。。。还需要学习。。。
页: [1]
查看完整版本: RUBY 类里面没定义方法,调用不报错怎么搞