我在我的项目的/lib/mix/tasks/start.ex中创建了一个新的Mix.Taskdefmodule Mix.Tasks.Start do use Mix.Task def run(_), do: IO.puts("Hello, World!") end 现在,它可以通过控...
我有以下代码:@spec test_pass(String.t) :: (:failed | {:ok, map()}) def test_pass(pass) do db_user = %{password_hash: @hash_for_foo} with {:ok, ^db_us...
同样地,我如何为“单个”UTF8字符进行类型规范? 在类型定义中,我可以使用泛型的“任何字符串”或“任何UTF8字符串”,例如:@type tile :: String.t # matches any string @type tile :: <<_::8>> # m...
是否可以定义以下类型: defmodule Role do use Exnumerator, values: ["admin", "regular", "restricted"] @type t :: "admin" | "regular" | "restricted" @s...
我正在阅读在线书籍 "learn you some erlang",并尝试一些练习来检查我的理解。 我对 fifo 示例做了一些修改,在章节类型规范和 Erlang中,尝试定义一个 "typed_fifo(T)"(所有元素都必须是同一类型 T 的 fifo)。 我的类型规范如下: -t...
我有一个项目,代码中没有 -spec 或 -type,目前 dialyzer 能够找到一些警告信息,其中大部分在机器生成的代码中。 添加类型规范能否让 dialyzer 发现更多错误? 顺带一提,是否有工具可以检查规范是否被违反?
我正在使用elixir_talk库。连接后,我想在与beanstalkd连接后调用一个私有函数。我刚刚添加了类型规范并运行了Dialyzer(通过dialyxir)。我收到以下错误: my_module.ex:3: The specification for 'Elixir.MyModule...
我正在使用Lager进行日志记录;它有一个解析器转换,将lager:warn/1等函数转换为lager:trace...函数。 但是dialyzer不处理解析器转换,因此会警告调用丢失或未导出的函数lager:warn/1。 我该如何告诉它这个函数确实存在,而且不要对它发出警告?