Elixir当你想使用`when`但有几个条件时,最佳做法是什么?

时间:2016-11-28 22:41:00

标签: elixir

我正在尝试学习elixir,我想知道when

如果我有一个结构,并且我想在is_member为真且level大于10时做某事,我该如何处理?

def allow_entry(%Player{ is_member: is_member, level: level })
  when ((the conditions above))

1 个答案:

答案 0 :(得分:4)

when适用于任何类型的布尔表达式,与Elixir中的任何其他模式匹配没有区别。

defmodule Player do
  defstruct is_member: nil, level: nil
end

defmodule TestModule do

  def allow_entry(%Player{ is_member: true, level: level }) 
    when level > 10 do
    IO.inspect(["Success"!, is_member, level])
  end

  def test() do
    # allow_entry(%Player{ is_member: true, level: 0}) # This will fail
    allow_entry(%Player{ is_member: true, level: 15}) # This will succeed
    # allow_entry(%Player{ is_member: false, level: 0}) # This will fail
    # allow_entry(%Player{ is_member: false, level: 15}) # This will fail
  end
end

TestModule.test()