如何在同一个模块内使用此方法的类中定义方法?如何在模块内部定义一个方法?
我想要做什么:
module X
def bar
puts 'Hello'
end
class Y
def foo
bar
end
end
end
我想打电话给使用Y.new.foo
例如bar
方法。我想在我的模块中定义方法,以便模块中的所有类都会继承它们。
为什么不能正常工作?什么是最接近的方式来做到这一点?
如何在同一个模块内使用此方法的类中定义方法?如何在模块内部定义一个方法?
我想要做什么:
module X
def bar
puts 'Hello'
end
class Y
def foo
bar
end
end
end
我想打电话给使用Y.new.foo
例如bar
方法。我想在我的模块中定义方法,以便模块中的所有类都会继承它们。
为什么不能正常工作?什么是最接近的方式来做到这一点?
假设您不希望在该类中包含该模块,则不能引用该方法,因为没有实例可以调用它。您可以改为:
module X
def self.bar
puts 'Hello'
end
class Y
def foo
X.bar
end
end
end
,最好使用包括
module X
def bar
puts 'Hello'
end
class Y
include X
def foo
bar
end
end
end
在foo中使用X.bar。 –
我用X :: Y.new.foo测试过,它工作正常 –
我认为这是最好使用一个单独的对象定义共享的方法,而不是污染名字空间目的。
module X
module InstanceMethods
def bar
puts 'Hello'
end
end
class Y
include InstanceMethods
def foo
bar
end
end
end
为什么在这种特殊情况下类声明的顺序很重要?我的意思是Y类必须在模块InstanceMethods之后声明。 –
你想要做什么?它怎么不起作用?你会得到什么错误? – Mhmd
用英文书写时请使用英文标点符号。 – sawa