Ruby 中所有属性的“神奇构造函数”

Fu8*_*u86 2 ruby dry shortcut

有没有办法设置默认的初始化方法而不需要写下来?

class DataClass
  attr_accessor :title, :description, :childs
  def hasChilds?
    @childs.nil?
  end
end
Run Code Online (Sandbox Code Playgroud)

我想用标准初始属性初始化此类。像这样的东西:

$> a = DataClass.new(:title => "adsf", :description => "test")
$> a.title # --> "asdf"
Run Code Online (Sandbox Code Playgroud)

有这样的解决办法吗?

rjk*_*rjk 5

一种选择是使用 aStruct作为类的基础。例如:

class DataClass < Struct.new(:title, :description, :childs)
  def has_childs?
    @childs.nil?
  end
end

a = DataClass.new('adsf', 'description')
puts a.title
Run Code Online (Sandbox Code Playgroud)

现在参数的顺序很重要。