gpt4 book ai didi

elixir - 来自 elixir 脚本的非常基本的 IEx 和 IEx.pry 得到错误 : IEx shell running?

转载 作者:行者123 更新时间:2023-12-05 00:20:33 25 4
gpt4 key购买 nike

我正在研究 Dave Thomas 的 Programming Elixir,我正在尝试列表章节中的一些示例。

当我学习一门语言时,我更喜欢通过运行 <language executable> <script file> 来尽可能地保持基础。 .在这种情况下,我正在运行 elixir reduce.exs
reduce.exs 的内容:

require IEx;

defmodule MyList do
def reduce([], memo, _), do: memo
def reduce([head | tail], memo, func) do
IEx.pry
reduce(tail, func.(head, memo), func)
end
end

ExUnit.start()
defmodule MyListTest do
use ExUnit.Case

def test do
assert 10 == MyList.reduce([1,2,3,4], 0, &(&1 + &2))
end
end

IO.puts(MyListTest.test())

运行控制台输出时:
Cannot pry #PID<0.70.0> at reduce.exs:9. Is an IEx shell running?

我认为我完全误解了一些核心概念,但我不完全确定它们是什么。

我的期望是该程序会直接进入 iex当它执行 IEx.pry 时的 session .鉴于 iex 在 elixir 核心库中,我认为 require IEx使用 pry 就足够了。

我是否需要使用 IEx.pry/3 ?我是否需要运行一个单独的 iex 实例并以某种方式将两个节点连接在一起?

只需通过运行 iex reduce.exs 来评估代码运行该文件,但它不显示测试输出。

随意纠正我所做的任何愚蠢的假设。

最佳答案

您收到此错误是因为 IEx需要运行。使用命令 iex reduce.exs将允许您输入代码和位置 IEx.pry放在你的源文件中。

要从那里继续执行,请输入 respawn在 shell 中。它会询问您是否允许每次递归进行 pry 动,但最终会打印出测试结果。

您事先没有看到测试输出的原因是 IEx.pry停止执行,因此您的测试函数没有返回并且 IO.puts通话未完成。

关于elixir - 来自 elixir 脚本的非常基本的 IEx 和 IEx.pry 得到错误 : IEx shell running?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com