Ruby structs是定义轻量级数据容器的便捷方式。我的问题是它们是否像普通对象一样分配在堆上或堆栈上(例如,在C#值类型中)。如果它们是堆分配的,那么对于ruby结构是否有任何性能上的好处 - 或陷阱。
答案 0 :(得分:4)
C#值类型不是堆栈分配的。它们有时是堆栈分配的,有时不是。它们在声明值类型类型的本地值时分配堆栈,但在声明值类型类型的类实例字段时不分配堆栈。
Ruby结构是普通的Ruby类,结构类的实例就像在堆上分配的任何其他类的实例一样。唯一值为类型的Ruby类型是FalseClass
,TrueClass
,NilClass
,Fixnum
和Symbol
。 Symbol
是特殊的,因为实例也必须在符号表中全局分配,同时又是值类型。