【发布时间】:2014-02-02 07:36:11
【问题描述】:
我有以下问题。我想要一个方法,我们称它为method_A,检查调用method_A的对象名称。
这是一个简单的参考,但我要做的事情会比这复杂得多,我知道有一种替代方法可以以更好的方式解决我需要的问题,但是可惜代码几乎完成了,并且我没有足够的时间来调整很多。不管怎样,就这样吧:
class Picture
attr_accessor :size
def resize
name = self.get_object_name_here
case name
when Big #Can be string or variable, I don't mind
self.size *= .5
when Medium
when Small
self.size *= 2
else
end
def get_object_name_here
object_name
end
end
Big = Picture.new
Medium = Picture.new
Small = Picture.new
Big.size = 10
Medium.size = 10
Small.size = 10
Big.resize => 5
Medium.resize => 10
Small.resize => 20
如果有办法做到这一点
name = object_name
那会很有帮助
非常感谢!
编辑:对于大写的 Big、Medium、Small 感到抱歉。他们是错别字。
【问题讨论】:
-
object_name是什么意思?在你的例子中他们会是Big, Medium and Small吗? -
是的,是的,它们将是 Big、Medium 和 Small。
-
我认为这不可能实现,因为这些是已分配给
Picture对象的变量的名称:Picture不可能知道哪个您正在使用的变量。 -
好吧,任何识别哪个对象(不是类)正在调用此方法的方法都会非常有帮助。我只需要案例操作员来工作。
-
那么你将不得不改变类来为 name 属性添加一个 setter,就像你为 size 所做的那样。