首页 > 解决方案 > ENV.fetch 与块或第二个参数有什么区别?

问题描述

我不确定是否:

ENV.fetch("RAILS_MAX_THREADS") { 5 }

和:

ENV.fetch("RAILS_MAX_THREADS", 5)

是否相同。有什么区别?

标签: ruby

解决方案


不同之处在于缺少的变量名称会生成给块。

在您的示例中,结果是相同的,因为您不使用产生的字符串,但试试这个看看不同:

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"

推荐阅读