当前位置: 首页 > 知识库问答 >
问题:

Elixir Simple模块仅产生“参数错误”

国俊艾
2023-03-14

我有一个简单的、独立的模块,可以生成:

elixir impl_bad.ex
** (ArgumentError) argument error

在iex中:

=> iex
Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]

Interactive Elixir (1.9.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c "impl_bad.ex"

== Compilation error in file impl_bad.ex ==
** (ArgumentError) argument error

** (ArgumentError) argument error

代码:

defmodule ImplBad do
  def run_addition_problems(aconfig) do
    do_addition_problems(aconfig)
  end
end

将此5行代码单独放入文件中。

我知道do_addition_problems()不存在,但我希望有一个带有行号的未定义错误。

我从存在do\u addition\u problems()的项目文件中提取了这段代码。

我希望编译器能提供更多的信息。我不得不从大约1k LOC的模块中执行“二进制搜索”,以查明这个问题。

这是elixir 1.9.4的问题吗?

共有1个答案

柯正谊
2023-03-14

这是同时使用Erlang/OTP 23和Elixir 1.9.4的问题。

Elixir 1.9早于OTP 23,但Elixir充分利用了OTP,因此它在编译期间依赖于来自erlang编译器的一些警告/消息

也就是说,将OTP降级到Elixir 1.9版本(我相信21个版本就可以了),或者将Elixir升级到最新的Elixir 1.11.1版本将解决产生幻想的问题

== Compilation error in file /tmp/test.ex ==
** (CompileError) /tmp/test.ex:3: undefined function do_addition_problems/1
    (elixir 1.11.1) src/elixir_locals.erl:114: anonymous fn/3 in :elixir_locals.ensure_no_undefined_local/3
    (stdlib 3.13.2) erl_eval.erl:680: :erl_eval.do_apply/6
 类似资料:
  • Python中的短语“仅关键字args”有点含糊——通常我认为它是指传递给< code>**kwarg参数的args。然而,< code>inspect模块似乎对< code>**kwarg和所谓的“仅关键字参数”进行了区分。 来自文档: inspect.getfullargspec(func) 获取Python函数参数的名称和默认值。返回一个命名元组: < code>args是参数名称的列表。<

  • 我使用https://github . com/confluent Inc/confluent-Kafka-python/blob/master/examples/avro _ producer . py中的示例代码将数据加载到主题中。我只做了一个更改,那就是我添加了“default”:为了模式兼容性,每个字段都为null。它加载得很好,因为我可以在http://localhost:9021/中看

  • 我试图在代码欺骗中创建一个功能测试,在那里我可以检查数据库表是否被pupuated,这里是测试: 以下是yaml文件: 我得到一个错误: 但是,当我在浏览器中填写表单时,代码起作用,用户已注册

  • 我猜自动模块: http://openjdk.java.net/projects/jigsaw/spec/sotms/#automatic-模块 意味着需要第三方jar的项目的每个模块都必须将该jar打包到自己的模块化jar中。如果是这样的话,那么一个大型多模块应用程序最终是否会比其基于类路径的Java 8应用程序更大呢?我想到了所有几乎无处不在的apache库和其他常见的开源依赖项。 我在未来获

  • 我正在尝试为自定义模板类创建一个加法运算符,其中第一个参数可以是我的类的实例,也可以是基本的数字类型。My operator的定义类似于下面的示例代码: 我的预期是,由于SFINAE,试图用

  • 我正在IBM RAD 9下开发WebSphere 8.5的应用程序,使用EJB 3:( 我已将项目拆分为以下 maven 模块: dto(仅限“愚蠢”的传输对象) ejb(业务逻辑) web(其余频道,构建类型为WAR) ear(构建类型是ear) EJB模块在META-INF中有空的beans.xml文件。那里有一个生产者类,它产生一些 这种用法非常简单: 它已经在工作了!经过代码的一些改动(涉