Ruby 类的新实例还是其他什么?

Ruby 类的新实例还是其他什么?,ruby,Ruby,我见过这样的代码 Specification.new do |s| s.name = %q{casein} s.version = "3.1.11" .... 有人能解释一下“do | s |”背后的想法吗?这是一个在ruby中使用块的示例。块是可以传递给方法的代码块(new只是一个常规方法) 在这里,Foo中的初始值设定项调用一个块(如果给定了一个块),并将一个参数传递给它。块然后可以接收该参数并执行其工作 这里。这是一个参数,它被规范的初始值设定项 在那门课上,情况可能是这样的:

我见过这样的代码

Specification.new do |s|
  s.name = %q{casein}
  s.version = "3.1.11"
....

有人能解释一下“do | s |”背后的想法吗?

这是一个在ruby中使用块的示例。块是可以传递给方法的代码块(
new
只是一个常规方法)

在这里,
Foo
中的初始值设定项调用一个块(如果给定了一个块),并将一个参数传递给它。块然后可以接收该参数并执行其工作


这里。

这是一个参数,它被
规范的初始值设定项

在那门课上,情况可能是这样的:

class Specification
  def initialize
    # ...
    yield self
    # ...
  end
end
yield
执行一个块并将一个参数传递给它-
self
(它可能是任何其他对象,所以最好检查源代码)

代码块通常如下所示:

do |arguments, list|
  # code here
end
但参数是可选的(除非它是lambda,并且您会因为太少或太多而得到异常)

搜索“ruby块”。我很惊讶没有。。以前遇到过。它在许多地方使用:
。每个
都是一个非常常见的例子<代码>do |参数|。。end
{| params | |..}
相同,块的开始/结束使用了不同的标记,如果这是混淆的原因。哦,还有,请把真正的问题放在标题中。
do |arguments, list|
  # code here
end