我正在阅读 jbuilder's README并看到了这些代码:
class Person
# ... Class Definition ... #
def to_builder
Jbuilder.new do |person|
person.(self, :name, :age)
end
end
end
我试图自己复制它,它要求一个call
方法,所以:
class Thing
attr_accessor :name, :age
def call(*args)
puts args.inspect
end
end
Thing.new.(:name, :age) # => [:name, :age]
那么为什么在jbuilder
调用中会有一个self
呢?
最佳答案
self
这里只是传递给Jbuilder的call
方法的一个参数。
Jbuilder
需要person
的实例(在代码中是self
)和属性名(:name
和 :age
在代码中)生成 json 数据。
例子:
class Thing
attr_accessor :name, :age
def call(*args)
puts args.inspect
end
end
class Bar
def to_thing
Thing.new.(self, :name, :age)
end
end
Bar.new.to_thing
关于圆点括号调用语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580516/