1

就那么简单

c = :cat
c.to_s
puts c.class

给我符号,和

c = "cat"
c.to_sym
puts c.class

给出字符串。我使用的 Ruby 是 1.9.3,文档说这应该将符号转换为字符串,并将字符串转换为符号。什么可能是错的?

4

3 回答 3

4

to_s并且to_sym不要改变原始变量,而是返回一个值。您需要.class使用.to_s.

c = :cat
c.to_s.class
# "String"

c = "cat"
c.to_sym.class
# "Symbol"

如果要转换新变量,则必须对其进行赋值。

c = "cat"
d = c.to_sym
puts d.class
# d is a symbol
# "Symbol"
于 2013-01-11T14:11:00.997 回答
2

to_sto_sym返回新值,它们不会转换变量。

于 2013-01-11T14:10:36.463 回答
1

尝试:

c = :cat
c = c.to_s
puts c.class # "String"

c = "cat"
c = c.to_sym
puts c.class # "Symbol"
于 2013-01-11T14:13:55.523 回答