一般来说,与 Struct 相比,使用 OpenStruct 的优点和缺点是什么?哪种类型的一般用例适合这些用例?
使用OpenStruct,您可以任意创建属性。Struct另一方面,A必须在创建时定义其属性。选择一个而不是另一个应该主要基于您以后是否需要能够添加属性。
OpenStruct
Struct
考虑它们的方式是作为一方面的哈希和另一方面的类之间的频谱的中间立场。它们暗示数据之间的关系比 a 更具体Hash,但它们没有类的实例方法。例如,函数的一堆选项在散列中有意义;它们只是松散的相关。函数所需的姓名、电子邮件和电话号码可以一起打包在Struct或OpenStruct中。如果该名称、电子邮件和电话号码需要方法以“First Last”和“Last, First”两种格式提供名称,那么您应该创建一个类来处理它。
Hash