Elixir:
使用YAML工作

如何操作:

Elixir默认不包含内建的YAML支持。然而,你可以使用第三方库,如yamerlyaml_elixir来处理YAML。这里,我们将重点关注yaml_elixir,因为它的易用性和全面的特性。

首先,将yaml_elixir添加到你的mix.exs依赖中:

defp deps do
  [
    {:yaml_elixir, "~> 2.9"}
  ]
end

然后,运行mix deps.get来获取新的依赖。

读取 YAML

给定一个简单的YAML文件,config.yaml,内容如下:

database:
  adapter: postgres
  username: user
  password: pass

你可以这样读取这个YAML文件并将其转换为Elixir map:

defmodule Config do
  def read do
    {:ok, content} = YamlElixir.read_from_file("config.yaml")
    content
  end
end

# 示例使用
Config.read()
# 输出: 
# %{
#   "database" => %{
#     "adapter" => "postgres",
#     "username" => "user",
#     "password" => "pass"
#   }
# }

写入 YAML

要将一个map写回YAML文件:

defmodule ConfigWriter do
  def write do
    content = %{
      database: %{
        adapter: "mysql",
        username: "root",
        password: "s3cret"
      }
    }
    
    YamlElixir.write_to_file("new_config.yaml", content)
  end
end

# 示例使用
ConfigWriter.write()
# 这将创建或覆盖`new_config.yaml`,内容为指定的内容

注意,yaml_elixir允许在YAML文件和Elixir数据结构之间直接转换,这使它成为需要处理YAML数据的Elixir程序员的绝佳选择。