Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux erlang-导入不工作_Linux_Erlang - Fatal编程技术网

Linux erlang-导入不工作

Linux erlang-导入不工作,linux,erlang,Linux,Erlang,我有一个用rebar编译的erlang程序,在新的debian版本发布后,它将不再编译,抱怨如下: -import(erl_scan). -import(erl_parse). -import(io_lib). 说: 不良进口报关单 我不知道erlang,我只是想编译这个东西。 很明显,最近发生了一些不好的事情 有没有一种简单的方法来解决这个问题?首先查看存储在位置$ERL\u LIBS中的内容,通常指向/usr/lib/erlang/lib。首先查看存储在位置$ERL\u LIBS中的内容,

我有一个用rebar编译的erlang程序,在新的debian版本发布后,它将不再编译,抱怨如下:

-import(erl_scan).
-import(erl_parse).
-import(io_lib).
说:

不良进口报关单

我不知道erlang,我只是想编译这个东西。 很明显,最近发生了一些不好的事情


有没有一种简单的方法来解决这个问题?

首先查看存储在位置
$ERL\u LIBS
中的内容,通常指向/usr/lib/erlang/lib。

首先查看存储在位置
$ERL\u LIBS
中的内容,通常指向/usr/lib/erlang/lib。

没有简单的方法来解决这个问题。源代码必须更新,对导入函数的每个引用都必须以相关模块作为前缀。例如,对
format
的每次调用都应替换为
io_lib:format
,尽管您必须知道从哪个模块导入了哪个函数


您可以从删除
-import
指令开始。然后编译应该失败,抱怨函数未定义。这就是您需要提供正确模块名称的地方。请查看文档页面中的,并查看哪个模块中包含哪些函数。

不,没有简单的方法可以解决此问题。源代码必须更新,对导入函数的每个引用都必须以相关模块作为前缀。例如,对
format
的每次调用都应替换为
io_lib:format
,尽管您必须知道从哪个模块导入了哪个函数

您可以从删除
-import
指令开始。然后编译应该失败,抱怨函数未定义。这就是您需要提供正确模块名称的地方。请查看文档页面,查看哪些函数位于哪个模块中。

好吧,
-import()。
正在工作,但它确实执行了而不是执行了您期望它执行的操作。它不会将模块“导入”到您的模块中,也不会外出,找到模块并获取所有导出的函数,并允许您在不使用模块名称的情况下使用它们。您可以像这样使用
-import

-import(lists, [map/2,foldl/3,foldr/3]).
然后,您可以在没有模块名的情况下调用显式导入的函数,编译器通过添加模块名对调用进行语法转换。因此编译器将转换:

map(MyFun, List) ===> lists:map(MyFun, List)
请注意,这是它的全部功能。没有检查模块是否存在,或者函数是否已导出,这是一个纯粹的简单语法转换。它只提供了略短的代码。由于这个原因,它很少被使用,大多数人建议不要使用它

还要注意,所有操作的代码单位都是模块,因此编译器根本不进行任何模块间检查或优化。模块之间的所有操作,如检查模块是否存在或它导出的函数,都是在运行时调用另一个模块中的函数时完成的。

好吧,
-import()。
正在工作,但它确实执行了而不是执行了您希望它执行的操作。它不会将模块“导入”到您的模块中,也不会外出,找到模块并获取所有导出的函数,并允许您在不使用模块名称的情况下使用它们。您可以像这样使用
-import

-import(lists, [map/2,foldl/3,foldr/3]).
然后,您可以在没有模块名的情况下调用显式导入的函数,编译器通过添加模块名对调用进行语法转换。因此编译器将转换:

map(MyFun, List) ===> lists:map(MyFun, List)
请注意,这是它的全部功能。没有检查模块是否存在,或者函数是否已导出,这是一个纯粹的简单语法转换。它只提供了略短的代码。由于这个原因,它很少被使用,大多数人建议不要使用它


还要注意,所有操作的代码单位都是模块,因此编译器根本不进行任何模块间检查或优化。模块之间的所有操作,如检查模块是否存在或它导出的函数,都是在运行时调用另一个模块中的函数时完成的。

您的问题是,您使用的是实验性的
-import(Mod)
指令,它是参数化模块的一部分。这些在R16B及以后的版本中已消失


我经常建议不要使用import。这会影响快速搜索和外呼的唯一命名。获取一个可以快速扩展名称的编辑器。

您的问题是您使用的是实验性的
-import(Mod)
指令,它是参数化模块的一部分。这些在R16B及以后的版本中已消失


我经常建议不要使用import。这会影响快速搜索和外呼的唯一命名。获取一个可以快速扩展名称的编辑器。

编译工作正常,直到发生dist升级,系统上存在模块我理解,这就是为什么我试图查看模块在升级过程中是否被删除或重命名编译工作正常,直到发生dist升级,系统上存在模块我知道,这就是为什么我试图查看在升级过程中模块是否已被删除或重命名从所有文件中删除所有导入似乎在没有其他修改的情况下工作(正常吗?)我猜有人已经清理了代码并在所有调用之前加上前缀,但是忘了拿出导入指令。请注意,这些导入声明(被删除的实验“包”的一部分)并没有导入特定的函数,比如普通的导入(ModuleName、[Function1,…,FunctionN]),而是导入模块名,因此可以使用“foo”而不是“bar.baz.foo”,等等。导入像io_lib这样的名称只是意味着不必像在.io_lib中那样使用前导点来表示“空”名称空间。如果包含模块本身不在包中(可能是,一次,然后再次重命名),那么导入无论如何都没有效果