【发布时间】:2017-08-10 10:20:00
【问题描述】:
我正在研究 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.pry 时会进入iex 会话。鉴于 iex 在 elixir 核心库中,我认为 require IEx 足以使用 pry。
我需要使用IEx.pry/3吗?我是否需要运行一个单独的 iex 实例并以某种方式将两个节点连接在一起?
仅通过运行iex reduce.exs 来评估代码会运行文件,但它不会显示测试输出。
请随时纠正我所做的所有愚蠢假设。
【问题讨论】:
标签: elixir elixir-iex