这两种语法有什么区别:
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. Returnsnil
if the named variable does not exist.
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’)会引发异常.