当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Application.get_env用法及代码示例


Elixir语言中 Application.get_env 相关用法介绍如下。

用法:

get_env(app, key, default \\ nil)
@spec get_env(app(), key(), value()) :: value()

app 的环境中返回 key 的值。

如果配置参数不存在,则函数返回default 值。

重要提示:如果您在编译时读取应用程序环境,例如,在模块定义内部而不是在函数内部,请参阅 compile_env/3

重要提示:如果您正在编写一个供其他开发人员使用的库,通常建议避免使用应用程序环境,因为应用程序环境实际上是一个全局存储。如需更多信息,请阅读我们的library guidelines

例子

get_env/3 通常用于读取 OTP 应用程序的配置。由于混合配置通常用于配置应用程序,我们将以此作为说明。

考虑一个新的应用程序 :my_app:my_app 包含一个支持数据库池的数据库引擎。数据库引擎需要知道每个数据库的配置,并且该配置由 :my_app 环境中的键值对提供。

config :my_app, Databases.RepoOne,
  # A database configuration
  ip: "localhost",
  port: 5433

config :my_app, Databases.RepoTwo,
  # Another database configuration (for the same OTP app)
  ip: "localhost",
  port: 20717

config :my_app, my_app_databases: [Databases.RepoOne, Databases.RepoTwo]

:my_app 使用的我们的数据库引擎需要知道存在哪些数据库,以及数据库配置是什么。数据库引擎可以调用Application.get_env(:my_app, :my_app_databases, []) 来检索数据库列表(由模块名称指定)。

然后引擎可以遍历列表中的每个存储库并调用Application.get_env(:my_app, Databases.RepoOne) 等来检索每个存储库的配置。在这种情况下,每个配置都会是一个关键字列表,因此您可以使用 Keyword 模块甚至 Access 模块中的函数对其进行遍历,例如:

config = Application.get_env(:my_app, Databases.RepoOne)
config[:ip]

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Application.get_env(app, key, default \\ nil)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。