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_s新しい値をto_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 に答える