为什么to_sym表现不同?

Aru*_*n G 1 ruby

我有两个字符串.他们的行为方式不同to_sym:

key = "awesome123xyz"
key.to_sym #=> :awesome123xyz

object.id #=> "589d62c016bd4d0005bccc15"
object.id.to_sym #=> :"589d62c016bd4d0005bccc15"
Run Code Online (Sandbox Code Playgroud)

为什么object.id.to_sym看起来像String的东西:

:"589d62c016bd4d0005bccc15"
Run Code Online (Sandbox Code Playgroud)

而不是像这样的符号?:

:589d62c016bd4d0005bccc15`
Run Code Online (Sandbox Code Playgroud)

And*_*eko 5

因为在Ruby :589d62c016bd4d0005bccc15中不是有效的Symbol文字.如果你有一个从整数或整数本身开始的字符串,转换为符号文字,它将始终具有以下形式:

'23'.to_sym
#=> :"23"
23.to_s.to_sym
#=> :"23"
Run Code Online (Sandbox Code Playgroud)