我在这里和那里看过像这样的代码
Specification.new do |s|
s.name = %q{casein}
s.version = "3.1.11"
....
有人可以解释一下“do | s |”背后的想法是什么?
答案 0 :(得分:0)
这是在ruby中使用块的示例。 Block是一块可以传递给方法的代码(new
只是一种常规方法)。
class Foo
def initialize
puts "doing some work"
yield('Foo') if block_given?
end
end
Foo.new do |s|
puts "output from #{s}"
end
# >> doing some work
# >> output from Foo
这里Foo
中的初始化程序会调用一个块(如果给出一个块)并传递一个参数。 Block然后可以接收该参数并完成其工作。
答案 1 :(得分:0)
这是一个被Specification
在那个课程中可能看起来像这样:
class Specification
def initialize
# ...
yield self
# ...
end
end
yield
执行一个块并将一个参数传递给它 - self
(它可能是任何其他对象,所以最好去检查源)
代码块通常如下所示:
do |arguments, list|
# code here
end
但是参数是可选的(除非它是lambda,你会因为太少或太多而得到例外)