- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
据我了解,ruby 类除了具有能够实例化它的附加功能外,它们几乎与模块相同。由于 Class
继承自 Module
,我假设每个类(类 Class
的对象)都可以访问 module_function
,但似乎并非如此。在做Module和Class的private_instance_methods差异时,发现Module
比Class
多了3个方法 - [:append_features, :extend_object, :module_function]
这些函数是如何从 Class 对象的调用链中删除的,更重要的是为什么?
最佳答案
那些核心特性都是用C实现的,所以讨论它不具有普遍性,也没有用。在 Ruby 中,您可以使用 undef
取消定义继承的方法,而无需取消定义父类(super class)中的方法。
class Foo
def foo; end
end
class Bar < Foo
undef :foo
end
Foo.new.foo
# => nil
Bar.new.foo
# => NoMethodError: undefined method `foo' for #<Bar:0x007f85c3ce3330>
append_features
是一个在模块被 include
-d 之前调用的 Hook ,它可以是一个模块,但不是一个类。extend_object
是一个 Hook ,在模块被 extend
之前调用,模块可以是,但类不是。module_function
的目的是将该方法兼作类方法和私有(private)实例方法,后者在您包含该模块时很有用,这可以通过模块完成,但不能通过一个类(class)。关于ruby - Ruby 类的 module_function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21766081/
在 ruby 中,我知道可以使用 module_function 在模块中混合使用模块函数,如此处所示。我知道这是多么有用,因此您可以在不混入模块的情况下使用该函数。 module MyModul
据我了解,ruby 类除了具有能够实例化它的附加功能外,它们几乎与模块相同。由于 Class 继承自 Module,我假设每个类(类 Class 的对象)都可以访问 module_function,但
似乎如果您希望能够调用模块(/类)上的方法,那么您正在寻找一个单例...如果是这种情况,您最好使用类方法或Singleton mixin(不寻找其中一个“更好”的答案)。 我在使用 #module_f
我在 module_function 中看到了这个例子在 ruby 文档中。我不明白代码的后半部分,其中 Mod.one 返回旧的“这是一个”,而 c.one 返回更新后的“这是新的”。这是怎么发生的
注意:此问题已发布在 Ruby-Forum没有得到答案 考虑这个模块: module MM def f end def self.g end module_function :f
test_module.rb module MyModule def module_func_a puts "module_func_a invoked" priv
extend self 和 module_function 是实现它的两种 ruby 方法,因此您可以在模块上调用方法,如果包含该模块也可以调用它。 这些方式的最终结果有什么不同吗? 最佳答案 m
在阅读开源的 Ruby 代码和编写可维护性的代码经常遇到这两者的使用,那么他们两者的共同点和区别是什么呢? module_function Ruby 的 module 是 method 和 co
主要问题:在Ruby API docs对于 module_function 方法,我看到了以下代码示例: module Mod def one "This is one" end
我正在尝试覆盖这样定义的 Rails 辅助方法: class Foo module Bar def orig # orig code end alias o o
在 Ruby 中用 module_function 定义一个模块函数和用 self. 定义它一样吗?也就是说,它们是否都会导致实例方法和模块方法的创建? 最佳答案 没有。 module M1 de
我是一名优秀的程序员,十分优秀!