Very basic IEx and IEx.pry from an elixir script gets error: IEx shell running?
Very basic IEx and IEx.pry from an elixir script gets error: IEx shell running?
我正在学习 Dave Thomas 的 Programming Elixir,我正在尝试列表章节中的一些示例。
当我学习一门语言时,我更喜欢 运行宁 <language executable> <script file>
尽可能保持基础。在这种情况下,我 运行ning 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.pry
时会直接进入 iex
会话。鉴于 iex 在 elixir 核心库中,我认为 require IEx
足以使用 pry。
我需要使用 IEx.pry/3
吗?我是否需要 运行 一个单独的 iex 实例并以某种方式将两个节点连接在一起?
只是通过 运行ning iex reduce.exs
运行s 文件评估代码,但不显示测试输出。
请随时纠正我所做的所有愚蠢假设。
您收到此错误是因为 IEx
需要 运行。使用命令 iex reduce.exs
将允许您输入代码以及 IEx.pry
在源文件中的位置。
要从那里继续执行,请在 shell 中键入 respawn
。它会询问你是否允许对每次递归进行窥探,但最终会打印出测试结果。
你之前没有看到测试输出的原因是 IEx.pry
停止了执行,因此你的测试函数没有返回并且 IO.puts
调用没有完成.
我正在学习 Dave Thomas 的 Programming Elixir,我正在尝试列表章节中的一些示例。
当我学习一门语言时,我更喜欢 运行宁 <language executable> <script file>
尽可能保持基础。在这种情况下,我 运行ning 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.pry
时会直接进入 iex
会话。鉴于 iex 在 elixir 核心库中,我认为 require IEx
足以使用 pry。
我需要使用 IEx.pry/3
吗?我是否需要 运行 一个单独的 iex 实例并以某种方式将两个节点连接在一起?
只是通过 运行ning iex reduce.exs
运行s 文件评估代码,但不显示测试输出。
请随时纠正我所做的所有愚蠢假设。
您收到此错误是因为 IEx
需要 运行。使用命令 iex reduce.exs
将允许您输入代码以及 IEx.pry
在源文件中的位置。
要从那里继续执行,请在 shell 中键入 respawn
。它会询问你是否允许对每次递归进行窥探,但最终会打印出测试结果。
你之前没有看到测试输出的原因是 IEx.pry
停止了执行,因此你的测试函数没有返回并且 IO.puts
调用没有完成.