to_s和to_sym不起作用

时间:2013-01-11 14:08:36

标签: ruby string symbols

简单就是那个

c = :cat
c.to_s
puts c.class

给了我符号,

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

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

3 个答案:

答案 0 :(得分:4)

to_sto_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"

答案 1 :(得分:2)

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

答案 2 :(得分:1)

尝试:

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

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