首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >undef的实际应用

undef的实际应用
EN

Stack Overflow用户
提问于 2011-01-14 22:08:05
回答 2查看 8K关注 0票数 4

可能重复:

undef - Why would you want to undefine a method in ruby?

有人能为红宝石中的undef设计出实用的用途吗?我来自javascript和python等没有内置它的语言。当然,您可以在javascript这样的语言中模拟它:

代码语言:javascript
复制
var obj = { func:function(){alert("works")} }
obj.func() // -> "works"
delete(obj["func"])
obj.func() //->obj.func() is not a function

但我从来没有真正用过它。在某些常见的情况下,undef实际上是有用的吗?

编辑 --在“Ruby”一书中看到了这一点:

防止对象复制的另一种技术是使用undef简单地删除克隆方法和dup方法。还有一种方法是重新定义克隆方法和dup方法,这样它们就会引发一个异常,其中包含一个错误消息,该错误消息明确表示不允许复制。这样的错误消息可能有助于使用您的类的程序员。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-14 22:23:50

我只能说我已经5年没有用过它了。也许更有用的是,浏览整个rails源代码只显示了7个实例,它们都与元编程相关。(undef_method在22岁时有更多的实例)。它似乎对测试有和没有模块混合的类的行为很有用。

希望有人能指出它的一些更传统的用途。

编辑参见前面的问题:undef - Why would you want to undefine a method in ruby?

票数 6
EN

Stack Overflow用户

发布于 2011-01-15 01:36:40

阻止子类调用超类中定义的方法(这实际上用于mongrel的setup.rb) (转述):

代码语言:javascript
复制
class Item
  def set
    do_something
  end
end

class ExecItem < Item
  undef set
end

不过,我想undef_method也会有同样的效果。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4696507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档