我无法提出解决方案。
class Person
def initialize(name)
@name = name
end
def greet(other_name)
@other_name
print "Hi #{@other_name}, my name is #{@name}"
end
end
kit = Person.new("Tom", "Jerry")
kit.greet
我很感激你的帮助。
答案 0 :(得分:0)
在initialize方法中,你应该接受两个参数,因为你用两个参数调用它。您在@other_name
函数中声明greet
变量而不是initialize
函数。
这样可行。
class Person
def initialize(name, other_name)
@name = name
@other_name = other_name
end
def greet
print "Hi #{@other_name}, my name is #{@name}"
end
end
kit = Person.new("Tom", "Jerry")
kit.greet
答案 1 :(得分:0)
你必须做出决定:
初始化Person
时是否要提供这两个名称:
class Person
def initialize(name, other)
@name = name
@other = other
end
def greet
puts "Hi #{@other}, my name is #{@name}"
end
end
kit = Person.new("Tom", "Jerry")
kit.greet
#=> Hi Jerry, my name is Tom
或者您想在调用greet
方法时提供第二个名称:
class Person
def initialize(name)
@name = name
end
def greet(other)
puts "Hi #{other}, my name is #{@name}"
end
end
kit = Person.new("Tom")
kit.greet("Jerry")
#=> Hi Jerry, my name is Tom
答案 2 :(得分:0)
考虑编写这样的代码:
class Person
attr_reader :name
def initialize(name)
@name = name
end
def greet(person)
puts "Hi #{person.name}, my name is #{name}"
end
end
tom = Person.new("Tom")
jer = Person.new("Jerry")
tom.greet(jer) #=> Hi Jerry, my name is Tom.
这样你实际上有另一个人作为对象而不仅仅是一个名字。