如何使用命名参数创建 Ruby 结构的新实例(而不是假设参数的正确顺序)

How create new instance of a Ruby Struct using named arguments (instead of assuming correct order of arguments)

给定:客户 = Struct.new(:name, :address, :zip)

有没有办法命名参数而不是假定某个顺序?

文档说这样做:

joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", "12345")

哪个 IMO 使得意外切换两个参数太容易了。

我想做这样的事情:

joe = Customer.new(name: "Joe Smith", address: "123 Maple, Anytown NC", zip: "12345")

这样顺序就不重要了:

joe = Customer.new(zip: "12345", name: "Joe Smith", address: "123 Maple, Anytown NC")

在 Ruby 的 Struct class 中(尚)无法使用命名参数。您可以根据此要点创建自己的子class:https://gist.github.com/mjohnsullivan/951668

如您所知,完整的 Classes 可以具有命名参数。我很想知道为什么 Structs 无法实现它们...我推测核心团队中的某个人已经想到了这一点并拒绝了它。