【发布时间】:2010-09-08 16:17:46
【问题描述】:
我不完全确定这在 Ruby 中是否可行,但希望有一种简单的方法可以做到这一点。我想声明一个变量,然后找出变量的名称。也就是说,对于这个简单的sn-p:
foo = ["goo", "baz"]
如何取回数组的名称(此处为“foo”)?如果确实有可能,这是否适用于任何变量(例如,标量、哈希等)?
编辑:这就是我基本上想要做的事情。我正在编写一个 SOAP 服务器,它包含一个包含三个重要变量的类,验证代码本质上是这样的:
[foo, goo, bar].each { |param|
if param.class != Array
puts "param_name wasn't an Array. It was a/an #{param.class}"
return "Error: param_name wasn't an Array"
end
}
然后我的问题是:我可以用 foo、goo 或 bar 替换“param_name”的实例吗?这些对象都是数组,所以到目前为止我收到的答案似乎不起作用(除了重新设计整个事情ala dbr's answer)
【问题讨论】:
-
如果我能理解的话,这可能是一个非常有趣的问题。我们需要更多的上下文。您什么时候需要但不知道变量的名称?我们可以回溯一两个“为什么”吗?您要解决什么问题?
-
这与您的问题无关,但是针对类名(数组)进行测试并不是很 Ruby-ish。相反,您应该针对您希望它具有的类的 FUNCTIONALITY 进行测试——在这种情况下,可能是可枚举性。
-
@Max Cantor,那么正确的测试方法是什么? Respond_to 还是什么?
-
太糟糕了,我喜欢变量知道自己名字的想法。以某种方式感到自我实现