让 Erlang shell 忘记 BIF

Posted

技术标签:

【中文标题】让 Erlang shell 忘记 BIF【英文标题】:Getting the Erlang shell to forget a BIF 【发布时间】:2015-10-31 19:57:27 【问题描述】:

有什么方法可以让 Erlang 忘记内置函数,以便我可以使用该名称?

例如。忘记找回

【问题讨论】:

【参考方案1】:

这里有点混乱。

    retrieve 不是内置函数,你可能会想到receive receive 不是内置函数,而是语言中的特殊标记,很像ifcaseend 等。这些不能修改。 BIF 大多在erlang 模块中实现,不能重新定义这个 erlang 中的许多 BIF 在模块等中自动导入。任何模块本地定义都将接管这些,否则它们是erlang:MyBif(...) 的语法快捷方式。 shell 复制了这些自动导入,但也提供了附加功能。它们在技术上不是 BIF。见Shell Commands 您可以通过配置自己的user_default 模块来覆盖shell 的自动导入。这些只能在 shell 中工作。 为避免在模块中自动导入,请使用 -compile(no_auto_import,[Name/N]). 模块属性,以便 Name(...) 始终使用本地函数。

【讨论】:

以上是关于让 Erlang shell 忘记 BIF的主要内容,如果未能解决你的问题,请参考以下文章

Erlang 模块向 shell 程序发送和接收消息

如何在 Erlang shell 中运行 Erlang 应用程序

从 shell 脚本调用 erlang 文件的函数

Erlang:函数在 shell 中工作,但不在 YAWS 中

无法从 shell 生成 erlang 主管

如何从 shell 中获取 Erlang 的发布版本号?