如何在模块内定义 class 旁边的方法?
How can I define a method aside a class inside a module?
如何在 class 之外定义一个方法,在同一模块中使用该方法?
我想做的事情:
module X
def bar
puts 'Hello'
end
class Y
def foo
bar
end
end
end
我想使用 Y.new.foo
调用 bar
方法。我想在我的模块中定义方法,以便该模块中的所有 classes 都将继承它们。
为什么这不起作用?最接近的方法是什么?
假设您不想在 class 中包含该模块,您不能引用该方法,因为没有实例可以调用它。您可以改为:
module X
def self.bar
puts 'Hello'
end
class Y
def foo
X.bar
end
end
end
如果要使用很多方法,最好使用include
module X
def bar
puts 'Hello'
end
class Y
include X
def foo
bar
end
end
end
我认为最好使用单独的对象来定义共享方法,而不是污染名称 space 对象。
module X
module InstanceMethods
def bar
puts 'Hello'
end
end
class Y
include InstanceMethods
def foo
bar
end
end
end
如何在 class 之外定义一个方法,在同一模块中使用该方法?
我想做的事情:
module X
def bar
puts 'Hello'
end
class Y
def foo
bar
end
end
end
我想使用 Y.new.foo
调用 bar
方法。我想在我的模块中定义方法,以便该模块中的所有 classes 都将继承它们。
为什么这不起作用?最接近的方法是什么?
假设您不想在 class 中包含该模块,您不能引用该方法,因为没有实例可以调用它。您可以改为:
module X
def self.bar
puts 'Hello'
end
class Y
def foo
X.bar
end
end
end
如果要使用很多方法,最好使用include
module X
def bar
puts 'Hello'
end
class Y
include X
def foo
bar
end
end
end
我认为最好使用单独的对象来定义共享方法,而不是污染名称 space 对象。
module X
module InstanceMethods
def bar
puts 'Hello'
end
end
class Y
include InstanceMethods
def foo
bar
end
end
end