1

谁能在这里帮助我了解以下两种方法如何与一些示例一起使用?

  • 模块#细化
  • 模块#used
4

1 回答 1

2

关于“refine”,它是名为Refinements的“实验性”功能的一部分。细化不是 Ruby 2.0 核心规范的一部分,因为它们的价值和后果仍在各种 Ruby 实现者之间进行讨论(请记住,Ruby 不仅仅是它的核心实现,“MRI”——JRuby、Rubinius 等)。

改进(如果它们有一天在规范中出现)将允许某种“本地猴子修补”,允许仅在给定模块的范围内修补现有类。如果您对围绕它们的某些部分的讨论感兴趣,您应该查看有关它的 Charles Olivier Nutter文章(他是 JRuby 的主要实现者)或Yehuda Katz的这篇文章。

关于“使用”,根据来源,它并没有做太多:

static VALUE
rb_obj_dummy(void)
{
    return Qnil;
}

经过一些研究和“求助”,这里是 Charles Olivier Nutter(JRuby 主要实现者)的回答:

当模块出现在细化的“使用”调用中时调用#used

所以你的两个问题实际上是相关的。

于 2013-03-10T18:43:36.273 回答