“警卫中的表达式无效,警卫中不允许使用大小写”错误

xji*_*xji 3 elixir pattern-matching

以下代码被视为错误mix

case test do
      ...
      t when !is_list(t) -> false
      ...
end
Run Code Online (Sandbox Code Playgroud)

错误是“警卫中的表达式无效,警卫中不允许使用大小写”。

但是,如果我删除!, 即写

case test do
      ...
      t when is_list(t) -> false
      ...
end
Run Code Online (Sandbox Code Playgroud)

没有错误报告。

这不可能吧?!应该只是否定函数。

zwi*_*pie 5

我认为如果您使用关键字not而不是!.

Not在防护测试中!允许,在防护测试中不允许。