【发布时间】:2022-11-22 09:16:28
【问题描述】:
为什么以下 Elixir 宏不适用于负值?
代码非常简单,没什么特别的,只有一个带有一些简单保护子句的宏:
defmodule IntegerChecker do
defmacro is_negative_or_zero(number)
when is_integer(number) and number <= 0, do: true
defmacro is_negative_or_zero(number)
when is_integer(number), do: false
end
> import IntegerChecker
> is_negative_or_zero(0)
true
> is_negative_or_zero(1)
false
> is_negative_or_zero(20)
false
> is_negative_or_zero(-1)
** (FunctionClauseError) no function clause matching in IntegerChecker.is_negative_or_zero/1
expanding macro: IntegerChecker.is_negative_or_zero/1
【问题讨论】:
标签: elixir