有谁可以帮助我在这里了解以下两种方法如何与一些例子一起使用?
- 模块#筛选
- 模块#使用
答案 0 :(得分:2)
关于“精炼”,它是名为Refinements的“实验性”特征的一部分。改进不是Ruby 2.0核心规范的一部分,因为它们的价值和后果仍然在各种Ruby实现者之间进行讨论(请记住,Ruby比其核心实现更多,“MRI” - JRuby,Rubinius等)。
优化(如果它们在规范中有一天到达),将允许某种“本地猴子修补”,允许仅在给定模块的范围内修补现有类。如果你对围绕它们的讨论的某些部分感兴趣,你应该看看Charles Olivier Nutter article(他是JRuby的主要实现者)或来自Yehuda Katz的this one。
关于“used”,根据来源,它没有做太多的事情:
static VALUE
rb_obj_dummy(void)
{
return Qnil;
}
经过一些研究和“call to help”,这里是Charles Olivier Nutter(JRuby主要执行者)回答:
当模块出现在细化的“使用”调用中时,会调用#used
所以你的两个问题实际上是联系在一起的。