带块或带有第二个参数的ENV.fetch有什么区别?

时间:2018-11-09 14:18:35

标签: ruby

我不确定是否:

ENV.fetch("RAILS_MAX_THREADS") { 5 }

和:

ENV.fetch("RAILS_MAX_THREADS", 5)

相同或不同。有什么区别?

1 个答案:

答案 0 :(得分:4)

区别在于缺少的变量名称会产生给该块。

在您的示例中,结果是相同的,因为您没有使用产生的字符串,但是尝试这样做以查看区别:

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"