Ruby 为什么我不能从模块中调用父类方法?
这是我的: 我想调用一个特定的(父)类方法,该方法将输出我将传递给它的值。但是它说Ruby 为什么我不能从模块中调用父类方法?,ruby,module,class-method,Ruby,Module,Class Method,这是我的: 我想调用一个特定的(父)类方法,该方法将输出我将传递给它的值。但是它说未定义的方法watchExt 我错在哪里?watchExt是从实例方法调用的,因此它应该是实例方法本身: class RubyEditExt def watchExt(value) # NO self puts value end ... end 或者应将其称为类方法: module RubyEditExtComponent def eventExt self.class.watc
未定义的方法watchExt
我错在哪里?
watchExt
是从实例方法调用的,因此它应该是实例方法本身:
class RubyEditExt
def watchExt(value) # NO self
puts value
end
...
end
或者应将其称为类方法:
module RubyEditExtComponent
def eventExt
self.class.watchExt "banana"
end
end
watchExt
是从实例方法调用的,因此它应该是实例方法本身:
class RubyEditExt
def watchExt(value) # NO self
puts value
end
...
end
或者应将其称为类方法:
module RubyEditExtComponent
def eventExt
self.class.watchExt "banana"
end
end
可能是,您正在尝试使用模块
RubyEditExtComponent
的功能扩展类RubyEditExt
。这与继承无关(ChildClassmodule RubyEditExtComponent
def self.included(klass)
klass.instance_eval do
include InstanceMethods
extend ClassMethods
end
end
module InstanceMethods
def eventExt
watchExt "banana"
end
end
module ClassMethods
def eventExt2
self.new.watchExt "banana"
end
end
end
class RubyEditExt
include RubyEditExtComponent
def watchExt(value)
puts value
end
end
方法self.included
在包含模块时调用(includerubyeditextcomponent
),并接收包含它的类。现在,您可以为类的对象调用实例方法:
RubyEditExt.new.eventExt
banana
=> nil
或者调用类方法。在这个方法中,我创建了一个类的实例(self.new
),该类包含模块(self==RubyEditExt
),然后为它调用实例方法watchExt
RubyEditExt.eventExt2
banana
=> nil
可能是,您正在尝试使用模块
RubyEditExtComponent
的功能扩展类RubyEditExt
。这与继承无关(ChildClassmodule RubyEditExtComponent
def self.included(klass)
klass.instance_eval do
include InstanceMethods
extend ClassMethods
end
end
module InstanceMethods
def eventExt
watchExt "banana"
end
end
module ClassMethods
def eventExt2
self.new.watchExt "banana"
end
end
end
class RubyEditExt
include RubyEditExtComponent
def watchExt(value)
puts value
end
end
方法self.included
在包含模块时调用(includerubyeditextcomponent
),并接收包含它的类。现在,您可以为类的对象调用实例方法:
RubyEditExt.new.eventExt
banana
=> nil
或者调用类方法。在这个方法中,我创建了一个类的实例(self.new
),该类包含模块(self==RubyEditExt
),然后为它调用实例方法watchExt
RubyEditExt.eventExt2
banana
=> nil
嗯,我需要使用单个“关键字”(在本例中,单个关键字是
watchExt
)从实例方法调用类方法。我该怎么做?这是另一个问题,你介意表达一下你想要达到的目标吗?一种方法是self.class.public\u发送:watchExt,“banana”
。坦率地说:我不完全理解这些要求。“使用单个关键字”是什么意思?我想在实例方法中使用自定义的“关键字”,以执行某些任务。因此,在本例中,“myPrinter”将在控制台上放置自定义文本。我所处的环境(例如)编写“watch”将在其控制台上打印文本(因此,基本上使用自定义设置执行put)。我需要同样的。然后self.class.public\u发送:watchExt,“香蕉”
应该满足您的要求。atom:watchExt
可以动态设置。但是我应该把它放在哪里呢?“香蕉”是一个动态的字符串。现在我可以写watchExt“banana”
,而不是watchExt“hello”
上面的一些行。它就像一个记录器……嗯,我需要使用一个“关键字”(在本例中,单个关键字是watchExt
)从实例方法调用类方法。我该怎么做?这是另一个问题,你介意表达一下你想要达到的目标吗?一种方法是self.class.public\u发送:watchExt,“banana”
。坦率地说:我不完全理解这些要求。“使用单个关键字”是什么意思?我想在实例方法中使用自定义的“关键字”,以执行某些任务。因此,在本例中,“myPrinter”将在控制台上放置自定义文本。我所处的环境(例如)编写“watch”将在其控制台上打印文本(因此,基本上使用自定义设置执行put)。我需要同样的。然后self.class.public\u发送:watchExt,“香蕉”
应该满足您的要求。atom:watchExt
可以动态设置。但是我应该把它放在哪里呢?“香蕉”是一个动态的字符串。现在我可以写watchExt“banana”
,而不是watchExt“hello”
上面的一些行。它有点像一个伐木工人。。。