Ruby ENV.fetch与block或第二个参数之间有什么区别?
我不确定是否:Ruby ENV.fetch与block或第二个参数之间有什么区别?,ruby,Ruby,我不确定是否: ENV.fetch("RAILS_MAX_THREADS") { 5 } 以及: 是否相同。区别是什么?区别在于缺少的变量名被赋予了块 在您的示例中,结果是相同的,因为您不使用生成的字符串,但请尝试以下操作以查看差异: ENV.fetch("RAILS_MAX_THREADS", 5) #=> 5 ENV.fetch("RAILS_MAX_THREADS") { |missing_name| "Could not find env var named " + missi
ENV.fetch("RAILS_MAX_THREADS") { 5 }
以及:
是否相同。区别是什么?区别在于缺少的变量名被赋予了块 在您的示例中,结果是相同的,因为您不使用生成的字符串,但请尝试以下操作以查看差异:
ENV.fetch("RAILS_MAX_THREADS", 5)
#=> 5
ENV.fetch("RAILS_MAX_THREADS") { |missing_name| "Could not find env var named " + missing_name }
#=> "Could not find env var named RAILS_MAX_THREADS"
所以这是一种设置自定义异常消息的方法?是的,据我所知,它只用于设置自定义消息。另一个区别是,块的代码只有在缺少键时才会计算。@Stefan:这是主要的方法,我想说nb@LeticiaEsperon,它不是提供自定义异常消息的方法,它提供了一种不同的方法来返回默认值。上面给出的示例看起来像一条异常消息,但它不会被引发。它将作为值返回。
ENV.fetch("RAILS_MAX_THREADS", 5)
#=> 5
ENV.fetch("RAILS_MAX_THREADS") { |missing_name| "Could not find env var named " + missing_name }
#=> "Could not find env var named RAILS_MAX_THREADS"