Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby ENV.fetch与block或第二个参数之间有什么区别?_Ruby - Fatal编程技术网

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"