Elixir中条件语句中的访问值

时间:2017-03-16 19:43:40

标签: elixir

是否可以访问条件导致的值?例如:

cond do
    Map.get(values, :foo) ->
        IO.puts "Value: #{foo}"
    true ->
        IO.puts "No value"
end

2 个答案:

答案 0 :(得分:3)

你也可以试试case

case Map.get(map, :key) do
  nil ->
    IO.puts "No value"

  value ->
    IO.puts "Value: #{inspect value}"
end

如果您想了解更多信息,请查看this link

修改

遗憾的是,这不够准确,因为与value相关的:key实际上可能是nil。如果您想确定value中是否存在map,然后才使用它,您可以尝试Map.fetch/2

map = %{key: nil}

case Map.fetch(map, :key) do
  {:ok, value} ->
    IO.puts "Value: #{inspect value}"

  :error ->
    IO.puts "No value"
end

答案 1 :(得分:1)

我想你想要这样的东西。

cond do
  value = Map.get(map, :key) ->
    IO.puts "Value: #{inspect value}"
  true ->
    IO.puts "No value"
end

您需要实际分配值才能使用它。