简单就是那个
c = :cat
c.to_s
puts c.class
给了我符号,
c = "cat"
c.to_sym
puts c.class
给出String。我使用的Ruby是1.9.3,文档说这应该将符号转换为字符串,将字符串转换为符号。什么可能是错的?
答案 0 :(得分: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"
答案 1 :(得分:2)
to_s
和to_sym
返回新值,它们不会转换变量。
答案 2 :(得分:1)
尝试:
c = :cat
c = c.to_s
puts c.class # "String"
c = "cat"
c = c.to_sym
puts c.class # "Symbol"