我有以下课程MyClass
。
class MyClass
def initialize(&block)
if block_given?
self.instance_eval &block
p "Hey #{@name}, I have a message for you: #{@message}"
else
#do_something else
end
end
def say(message)
@message = message
#puts "how are you"
end
def to(name)
puts self.inspect
@name = name
end
end
我用MyClass.new { say('Hello').to('Haseeb') }
打电话给这个班级。但它让我错了。
undefined method `to' for "Hello":String (NoMethodError).
输出应为Hey Haseeb I have a message for you: Hello
答案 0 :(得分:3)
你想链接方法⇒返回一个接收者(self
):
def say(message)
@message = message
self
end
在当前实现中,say
方法返回一个字符串,并且您在返回值(to
实例)上调用String
方法,从而导致错误。