让Erlang shell忘记BIF

时间:2015-08-08 13:19:06

标签: erlang erlang-shell erl

有什么方法可以让Erlang忘记内置函数,所以我可以使用那个名字吗?

例如。忘记检索

1 个答案:

答案 0 :(得分:6)

这里有点混乱。

  1. retrieve不是内置函数,您可能会想到receive
  2. receive不是内置函数,而是语言中的特殊标记,非常类似ifcaseend等。这些都无法修改。
  3. BIF主要在erlang模块中实施,您无法重新定义此
  4. erlang中的许多BIF都是自动导入模块等。任何模块本地定义都将接管这些定义,否则它们是erlang:MyBif(...)的语法快捷方式。
  5. shell复制这些自动导入,但也提供其他功能。它们在技术上不是BIF。请参阅Shell Commands
  6. 您可以通过配置自己的user_default模块来覆盖shell的自动导入。这些只能在shell中使用。
  7. 要避免模块中的自动导入,请使用-compile({no_auto_import,[Name/N]}).模块属性,以便Name(...)始终使用本地函数。