如何使用命名参数创建 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
无法实现它们...我推测核心团队中的某个人已经想到了这一点并拒绝了它。
给定:客户 = 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
无法实现它们...我推测核心团队中的某个人已经想到了这一点并拒绝了它。