【发布时间】:2021-11-07 02:23:18
【问题描述】:
我想将一个类(Paper)名称与不同类中的另一个类(Rock)名称进行比较。
换句话说,如何通过将对象作为参数传递来调用 Rock 对象中的 Paper 对象变量?
这是我的代码,Rock 类下的 if 语句有问题。
class Element
attr_accessor name
def initialize(name)
@name = name
end
def compare_to(name)
fail "This method should be overridden"
end
end
class Rock < Element
def compare_to(ob1)
if @name == @@ob1
return "do something"
end
return "help"
end
end
class Paper < Element
def compare_to(var)
end
end
rock = Rock.new('Rock')
paper = Paper.new('Paper')
puts rock.compare_to(paper)
【问题讨论】:
-
你的问题很不清楚。 “调用类变量”是什么意思?您不能“调用”变量。在 Ruby 中唯一可以调用的是方法。即使这并不完全正确,您也只能发送一条消息,运行时可能会或可能不会调用方法作为响应。此外,您永远不会显示类变量是如何初始化的,也永远不会显示它属于哪个类。另外,您只说有有问题,但没有说问题是什么。你有错误吗?错误是什么?你得到错误的结果吗?什么是错误的结果,什么是正确的
-
… 结果?行为不是您所期望的吗?您期望的行为是什么,而您观察到的行为是什么? idownvotedbecau.se/itsnotworkingidownvotedbecau.se/noexceptiondetails
-
创建
Rock.new('Paper')或Paper.new('Scissors')的可能性可能表明某些事情不太正确。 -
你永远不会为你的类变量
@@ob1赋值。那么@name == @@ob1的意义何在?
标签: ruby class inheritance instance