Ruby类中“属性”的本质是什么?

DrI*_*IDK 5 ruby properties class

在以下示例中,我不了解attr_reader或这样的关键字property

class Voiture 
  attr_reader :name
  attr_writer :name
  property :id, Serial
  property :name, String
  property :completed_at, DateTime
end
Run Code Online (Sandbox Code Playgroud)

它们如何工作?如何创建自己的?它们是功能,方法吗?

class MyClass 
    mymagickstuff :hello
end
Run Code Online (Sandbox Code Playgroud)

Cha*_*ell 0

你会想要给班级打补丁Module。这就是诸如此类的方法attr_reader所在的地方。

class Module
  def magic(args)
     puts args.inspect
  end
end

class A
  magic :hello, :hi
end
#=> [:hello, :hi]
Run Code Online (Sandbox Code Playgroud)

正如铁皮人提到的,猴子修补基础级别的类可能很危险。把它想象成时间旅行到过去并在过去添加一些东西。只需确保您添加的内容不会覆盖某些其他事件,否则您可能会返回到与您离开时不同的 Ruby 脚本/时间线。