Ruby圆括号调用语法
我正在阅读jbuilder的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
here只是传递给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
- ActionView :: Template ::错误:缺少要链接的主机
- 在select_tag中,使用options_from_collection_for_select,如何在rails上的ruby中设置所选元素
- ActionView :: Template :: Error(不兼容的字符编码:UTF-8和ASCII-8BIT)
- 如果值超出范围,Ruby优雅方式返回最小值/最大值
- Rails:如何从哈希中提取值? (亚马逊API /真空吸尘器)
- Rails形成带有改造轨道的对象,集合无法正常工作或validation
- open-uri和sax解析一个巨大的xml文档
- 创建ruby C ++扩展
- Capistrano 3:在任务中使用服务器自定义变量