gpt4 book ai didi

ruby-on-rails - Rails : difference between ENV. fetch() 和 ENV[]

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:14 25 4
gpt4 key购买 nike

这两种语法有什么区别:

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 的默认 block ,或引发异常),而 [] 只是在找不到 key 时默默地为您提供 nil

在特定情况下:

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

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

关于ruby-on-rails - Rails : difference between ENV. fetch() 和 ENV[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com