erlang -import不工作

LtW*_*orf 1 linux erlang

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

-import(erl_scan).
-import(erl_parse).
-import(io_lib).
Run Code Online (Sandbox Code Playgroud)

他说:

糟糕的进口申报

我不知道erlang,我只是想编译这个东西.显然最近发生了一件坏事 - 最近进入http://erlang.org/pipermail/erlang-questions/2013-March/072932.html

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

rvi*_*ing 9

那么,-import().是工作,但它确实不是做你期望它做的事.它不是 "进口"的模块到你的模块,也不出门,找到该模块,并得到所有导出功能,并允许您使用它们,而不模块的名字.你这样使用-import:

-import(lists, [map/2,foldl/3,foldr/3]).
Run Code Online (Sandbox Code Playgroud)

然后,您可以在没有模块名称的情况下调用显式导入的函数,编译器通过添加模块名称在语法上转换调用.所以编译器将转换:

map(MyFun, List) ===> lists:map(MyFun, List)
Run Code Online (Sandbox Code Playgroud)

请注意,这就是它的全部功能.没有检查模块是否存在或者是否导出函数,它是一个纯粹的天真语法转换.所有它给你的代码略短.因此,很少有人建议不要使用它.

另请注意,所有操作的代码单元都是模块,因此编译器根本不进行任何模块间检查或优化.当您在另一个模块中调用函数时,模块之间的所有内容(如检查模块是否存在或导出的函数)都是在运行时完成的.