将Ruby符号转换为整数

时间:2012-03-23 05:13:05

标签: ruby

我发现令人惊讶的是Ruby符号可以被整合到整数中而没有错误。 所以:a.to_i是合法的。我想知道这个整数的意义是什么,它是一个特定于该符号的唯一值吗?

2 个答案:

答案 0 :(得分:12)

你不应该这样做,因为在Ruby 1.9中删除了Symbol#to_i,因此不能兼容。无论如何,docs say this about it

  

返回一个整数,该整数对于特定程序执行中的每个符号都是唯一的。

它大致相当于在符号上调用object_id,因为它们最终都调用了C函数SYM2ID()

答案 1 :(得分:3)

在1.8.x中,符号是直接对象。它们的实施速度很快,而且大部分时间都很小。但随之而来的是关于缺乏垃圾收集的安全问题。

#to_i#to_int方法返回一个唯一的整数,并与内部实现相关。

符号 - 即时符号以及隐式和显式整数转换都已在1.9.x中删除。您当然可以获得object_id。有趣的是,1.8.x to_iobject_id没有返回相同的数字。