Dor*_*ian 5 ruby parameters syntax function
我正在阅读jbuilder的README并看到这些代码:
class Person
# ... Class Definition ... #
def to_builder
Jbuilder.new do |person|
person.(self, :name, :age)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我试图自己复制它,它要求一个call方法,所以:
class Thing
attr_accessor :name, :age
def call(*args)
puts args.inspect
end
end
Thing.new.(:name, :age) # => [:name, :age]
Run Code Online (Sandbox Code Playgroud)
那么,为什么有一个self在jbuilder电话吗?
self这里只是传递给 Jbuildercall方法的一个参数。
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
Run Code Online (Sandbox Code Playgroud)