ruby 怎么禁止重载方法?
RT...class A
def a
print 1
end
end
class A
def a
print 2
end
end
方法换了。。。
怎么禁止重载
另外 怎么禁止 alias
上面那个
class A
alias old_a a
def a
old_a
print 222
end
end
def a又换了。。。。
还有怎么禁止 之后增加的任意方法和实例变量 类变量??
对了对了
还有怎么禁止 以后增加的任意 类 方法模块统统禁止掉。。。 说简单点。。就是我写的代码
UUUU
UUUU
UUUU
XXXX
XXXX
XXXX
YYYY
YYYY
YYYY
ZZZZ
ZZZZ
只有 UUUU YYYY能执行,其他的地方 无论什么玩意都无效。。。能行么? 其他地方不搞成注释。。。 好像ruby不能用final,不知道有什么其他迂回的办法。 狗到一篇文章,可以自己实现final,让方法不会被重载。
http://www.thesorensens.org/2006/10/06/final-methods-in-ruby-prevent-method-override/ 3Q!我去看看,我怎么就搜不到。。。 话说你要不想让类上的方法有变化的话只要freeze一下就好了 = =
irb(main):001:0> class Foo
irb(main):002:1> def bar
irb(main):003:2> puts 1
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> Foo.freeze
=> Foo
irb(main):007:0> Foo.new.bar
1
=> nil
irb(main):008:0> class Foo
irb(main):009:1> def bar
irb(main):010:2> puts 2
irb(main):011:2> end
irb(main):012:1> end
TypeError: can't modify frozen class
from (irb):9
from :0
每次lw跑到我的blog去看的时候我就会想起到幻森转转 orz 我搜索的时候。。有人freeze说不好用我就没实验。。OTL
页:
[1]