1

これをシンボルでできるようにしたい

variable1 = :hello
variable2 = variable1.dup

ただし、このdup方法はシンボルでは機能しません。シンボルに同等の方法はありますか?

4

4 に答える 4

3

できません。特定のシンボルのインスタンスは 1 つしか存在しません。しようとするのと同じくらい不可能です42.dup

次の単純なスニペットを使用すると、シンボルに対して常に同じオブジェクトを取得できることがわかります。

Array.new(1000) { :foo.object_id }.uniq.size  #=> 1

対文字列(できるdup):

Array.new(1000) { 'foo'.object_id }.uniq.size  #=> 1000
于 2012-09-19T02:10:53.047 に答える
1

シンボルは複製できません。1 つのシンボルのインスタンスは 1 つのみにする必要があります。

于 2012-09-19T02:10:11.787 に答える
1

同じ内容の 2 つのシンボルは同じエンティティです。 で確認できます.object_id

于 2012-09-19T02:13:42.340 に答える
1

シンボルは不変です。したがって、それらを複製しても意味がありません。したがって、それができないように設計されています。

于 2012-09-19T03:06:55.753 に答える