加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:ENV.fetch()和ENV []之间的区别

发布时间:2020-12-16 21:20:06 所属栏目:百科 来源:网络整理
导读:这两种语法有什么区别: ENV.fetch( “MY_VAR”) ENV [ ‘MY_VAR’] 我已经看到Rails 5在不同的地方使用这两个版本,并且无法弄清楚区别是什么(除了第一个更多的字符要输入). 解决方法 类似ENV哈希的对象是纯 Ruby,不是Rails的一部分.从 fine ENV#[] manual:
这两种语法有什么区别:

ENV.fetch( “MY_VAR”)

ENV [ ‘MY_VAR’]

我已经看到Rails 5在不同的地方使用这两个版本,并且无法弄清楚区别是什么(除了第一个更多的字符要输入).

解决方法

类似ENV哈希的对象是纯 Ruby,不是Rails的一部分.从 fine ENV#[] manual:

Retrieves the value for environment variable name as a String. Returns nil if the named variable does not exist.

和fine ENV#fetch manual:

Retrieves the environment variable name.

If the given name does not exist and neither default nor a block a provided an IndexError is raised. If a block is given it is called with the missing name to provide a value. If a default value is given it will be returned when no block is given.

所以就像Hash#[]Hash#fetch一样,唯一的区别是fetch允许你指定如果找不到键的行为(使用传递给fetch的默认值,传递给fetch的默认块,或者引发异常)而[]只是默默地如果找不到密钥,则为零.

在具体情况下:

ENV.fetch("MY_VAR")
ENV['MY_VAR']

区别在于,如果没有MY_VAR环境变量,ENV [‘MY_VAR’]会给你nil,但ENV.fetch(‘MY_VAR’)会引发异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读