【发布时间】:2014-05-17 21:23:30
【问题描述】:
我有一种情况,我想创建一个接受许多参数的类,并在尽可能少的代码行中包含 setter 和 getter(为了可维护性)。我认为使用 Struct 会是一个好主意:
Customer = Struct.new(:id, :username, :first_name, :last_name, :address1, ...etc...)
Customer.new(123, 'joe', 'Joe', ...etc...)
但是,我不喜欢知道属性的确切顺序。我更喜欢 Ruby 2 的关键字参数功能:
class Customer
attr_accessor :id, :username, :first_name, ...etc...
def initialize(id:, username:, first_name:, last_name:, address1:, ...etc...)
@id = id
@username = username
@first_name = first_name
...etc...
end
end
Customer.new(id: 123, username: 'joe', first_name: 'Joe', ...etc...)
但是,将这些全部写出来需要更多的代码并且更加乏味。有没有办法像 Struct 这样的简写方式来实现同样的事情?
【问题讨论】:
-
只是一个想法,您可能更喜欢 OpenStruct。
标签: ruby