理解Ruby块。Rspec为什么这样做?

理解Ruby块。Rspec为什么这样做?,ruby,Ruby,我试图理解何时使用Ruby块,我发现为了配置rspec rails,您需要执行以下操作: RSpec::configure do |config| config.foo = bar end 为什么在这种情况下,将其作为块来执行会很有用?在块中,您可以更改范围。我相信你在这里的范围是RSpec,在街区内。我还认为,在块映像中只需说config.foo=bar是一种方便,因为您有20多个配置 在块中,可以更改范围。我相信你在这里的范围是RSpec,在街区内。我还认为,在块映像中只需说confi

我试图理解何时使用Ruby块,我发现为了配置rspec rails,您需要执行以下操作:

RSpec::configure do |config|
  config.foo = bar
end

为什么在这种情况下,将其作为块来执行会很有用?

在块中,您可以更改范围。我相信你在这里的范围是RSpec,在街区内。我还认为,在块映像中只需说config.foo=bar是一种方便,因为您有20多个配置

在块中,可以更改范围。我相信你在这里的范围是RSpec,在街区内。我还认为,在块映像中只需说config.foo=bar是一种方便,因为您有20多个配置

只是糖。这是简化的来源:

module Rspec
  def self.configuration
    @configuration ||= RSpec::Core::Configuration.new
  end

  def self.configure
    yield configuration if block_given?
  end

  # rest omitted
end
请参阅

这意味着你也可以写作

config = Rspec.configuration
config.foo = bar

只是糖。这是简化的来源:

module Rspec
  def self.configuration
    @configuration ||= RSpec::Core::Configuration.new
  end

  def self.configure
    yield configuration if block_given?
  end

  # rest omitted
end
请参阅

这意味着你也可以写作

config = Rspec.configuration
config.foo = bar

因为用RSpec.configuration作为前缀会很麻烦。你更喜欢哪个

RSpec.configuration.some_config_option = 5
RSpec.configuration.some_other_config_option = 6
RSpec.configuration.yet_another_config_option = :foo
或:


显然,您可以编写c=RSpec.configuration,然后使用c。之后的语法…但该块也很好地限定了配置代码的范围。

因为在所有代码前面加上RSpec.configuration会很麻烦。你更喜欢哪个

RSpec.configuration.some_config_option = 5
RSpec.configuration.some_other_config_option = 6
RSpec.configuration.yet_another_config_option = :foo
或:

显然,您可以编写c=RSpec.configuration,然后使用c。之后的语法…但是块也很好地限定了配置代码的范围