我正在使用Elixir,但我收到一个Dialyzer(通过Dialyxir)的错误信息,该信息显示
The pattern
variableVdate
can never match, because previous clauses completely cover the type
{:error, :badarg}.
以下是代码
date = Timex.DateTime.from_seconds(0)
case date do
{:error, :badarg} ->
{:error, "Bad Date"}
date ->
{:ok, date}
end
我相信这是因为 Timex.DateTime.from_seconds
拥有 错别字.
他们将其定义为:
@spec from_seconds(non_neg_integer) :: DateTime.t :: {:error, atom}
但我... 认为 应该是
@spec from_seconds(non_neg_integer) :: DateTime.t | {:error, atom}
有没有什么方法可以解决这个问题,也许可以通过覆盖类型规范或 date
类型的某种方式?
由于其他原因,我无法将Timex升级到3版本。
我想这是因为你在调用 from_seconds/1
用一个特定的值,0,所以返回值不是变量。我的猜测是,将秒作为一个传递的变量来运行这个程序可能会成功。
case Timex.DateTime.from_seconds(seconds) do
{:error, :badarg} ->
{:error, "Bad Date"}
date ->
{:ok, date}
end