You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一文件中导入Elixir模块失败,正确实现方式是什么?

问题分析与解决

你的代码问题不是import Test的写法错误,而是函数调用的语法歧义导致运行失败。

Elixir中,当把函数调用作为另一个函数的参数时,必须用括号明确包裹参数列表,否则解释器会错误解析参数个数。你的代码里IO.puts f :a, 3会被解析为IO.puts(f(:a), 3),但IO.puts/1只接受一个参数,因此触发错误。

修正后的代码

defmodule Test do
  def f(:a, x), do: x + 1
  def f(:b, x), do: x - 1
end

import Test
IO.puts(f(:a, 3))
IO.puts(f(:b, 3))

补充说明

  • 同一文件内定义的模块,直接使用import 模块名是完全合法的,不需要额外处理。
  • 也可以省略import Test,直接用模块名调用函数:IO.puts(Test.f(:a, 3)),这种写法更清晰,大型项目中更推荐使用。

内容的提问来源于stack exchange,提问作者lyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:07:34