首页 文章

erl不会自动完成使用-pa加载的代码

提问于
浏览
2

这是我的第一个小时的Erlang实验 . 请你温柔一点 .

  • 我检查了一个项目(https://github.com/wooga/eredis

  • 安装了螺纹钢

  • 编译模块(光束文件进入ebin)

  • 解雇了erl -pa . / ebin

  • 键入eredi - 并点击标签

此时没有显示任何内容,而所有其他模块都是自动完成的 . 所以我(合理地)假设模块梁文件没有加载 - 引导我进行各种无路径的路径调查等 .

但代码已经加载,它只是没有自动完成 .

1> {ok,C} =  eredis:start_link().
{ok,<0.35.0>}
2> eredis:q(C,["SET","foo","bar"]).
{ok,<<"OK">>}
3> eredis:q(C,["GET","foo"]).                       
{ok,<<"bar">>}

很棒,但我真的很喜欢自动完成工作 . 有没有办法让它运作?例如,在Zsh中,我必须执行rehash以显示新的路径项 - 我是否需要执行类似的操作?

1 回答

  • 2

    您需要确保模块已加载到shell中,并将其添加到路径 -pa 只是告诉VM在尝试加载模块时在哪里查找模块 . 有几种加载模块的方法

    • 调用应该加载的模块中的函数(因此在执行 eredis:start_link() 调用后,您可以选项卡完成eredis)

    • 使用 l(Module) 显式加载模块

    • 以编程方式: code:load_file(Module)

    Load all erlang modules in path非常实用!

相关问题