在块中设置参数

时间:2016-12-12 00:40:59

标签: ruby

我已经看到了一种在块中设置方法参数的方式(例如在法拉第中),如下所示:

conn.post do |req|
  req.url '/nigiri'
  req.headers['Content-Type'] = 'application/json'
  req.body = '{ "name": "Unagi" }'
end
  1. 这叫什么?
  2. 它是如何在引擎盖下工作的?

1 个答案:

答案 0 :(得分:2)

这是“高阶函数”的一个例子。 conn.post是一种调用另一种方法(在块中定义)的方法

这是一个简单的例子:

def call_block; yield; end
puts call_block { true }
# => true

您也可以将参数传递给yield

def yield_args(*args)
  yield args
end
yield_args(1, 2) { |item| item }
# => [1,2]