我正在尝试学习elixir,我想知道when
。
如果我有一个结构,并且我想在is_member
为真且level
大于10时做某事,我该如何处理?
def allow_entry(%Player{ is_member: is_member, level: level })
when ((the conditions above))
答案 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()