是否可以比较Ruby标识符?

时间:2014-04-18 11:38:56

标签: ruby

有没有办法比较 标识符

我知道这听起来非常奇怪和愚蠢,看起来我正在服用毒品,但是这里有:


首先,有一些课程:

class MyClass

end

现在,别名该类有两个常量:

A = MyClass
B = MyClass

显然是A == B

现在,有一些运算符Ω,它比较标识符

A Ω B       # => False
A Ω MyClass # => False
A Ω A       # => True

另一个例子是:

x = 10
y = 10

x Ω y   # => False
x Ω 10  # => False
x Ω x   # => True

Ruby中有可能吗?也许是某种meta方法允许你获取给定标识符的字符串名称?


此实际用途

无。好奇。

2 个答案:

答案 0 :(得分:0)

好吧,如果标识符是由其名称决定的东西,那么你必须知道如何比较变量的名称。很快,这是不可能的。

虽然有很多问题(有很好的答案)如何做到这一点。我建议你看看this一个。

答案 1 :(得分:0)

如果我理解您的问题,您想知道两个标识符在文本上是否相同。琐碎的答案是,这可以通过检查来源来确定。它也可以在处理语句的词法元素时由解释器确定,但获取该信息取决于实现。我想在执行期间可以查看解释器的符号表,但我怀疑该过程也依赖于实现。我不知道从解释程序中访问解释器内部状态的任何标准ruby代码。