Ruby構造体は、軽量のデータ コンテナーを定義する便利な方法です。私の質問は、それらが通常のオブジェクトと同じようにヒープに割り当てられるか、スタックに割り当てられるかです (たとえば、C# の値の型のように)。それらがヒープに割り当てられている場合、Ruby 構造体のパフォーマンス上の利点 (または落とし穴) はありますか。
1 に答える
4
C# の値の型はスタックに割り当てられません。スタックに割り当てられる場合もあれば、そうでない場合もあります。これらは、値型のローカル値を宣言するとスタックに割り当てられますが、値型のクラス インスタンス フィールドを宣言するとスタックに割り当てられません。
Ruby 構造体は通常の Ruby クラスであり、構造体クラスのインスタンスは、他のクラスのインスタンスと同様にヒープに割り当てられます。値型である Ruby 型はFalseClass
、、、、、TrueClass
およびのみNilClass
です。ただし、インスタンスはシンボル テーブルでグローバルに割り当てられると同時に、値の型である必要があるため、特殊です。Fixnum
Symbol
Symbol
于 2012-11-06T13:53:53.907 に答える