1
9
默认情况下从模块导出所有函数的做法不是Perl推荐的做法。只有在有充分理由的情况下才能导出函数。建议的做法是使用
以前的模块,如LWP::Simple和CGI,都是在本建议提出之前编写的,现在很难将它们修改为不导出东西,因为这会破坏现有的软件。我猜这个建议是通过人们注意到这样的问题而产生的。 无论如何,Perl的面向对象对象或它的任何调用都不需要您导出任何东西,而且您不必说$foo->,所以你问题的那部分是错的。 |
2
9
导出是一项功能。和任何语言中的其他特性一样,如果您(ab)过于频繁地使用它,或者在不应该使用它的地方,它可能会导致问题。明智地使用它是好的,反之则是坏的,就像其他任何功能一样。 在没有太多模块的时候,默认情况下导出东西并不是件坏事。然而,CPAN上有15000个包,必然会有冲突,这是不幸的。但是,现在修复模块可能会破坏现有代码。每当你做出一个糟糕的界面选择并向公众发布它时,即使你不喜欢它,你也会致力于它。
|
3
6
如果你想的话,我想你
当导出机制使代码更干净时,应该使用它。当名称空间发生冲突时,不应该使用它,因为它显然不能使代码更干净,但除此之外,我非常喜欢在请求时导出东西。 |
4
3
Moose
Rose::DB::Object
,一个流行ORM的对象接口。两者都导入了
实际上,这与从模块(每个模块都提供相同名称的方法)进行乘法继承的问题没有什么不同,只是父代的顺序将决定调用该方法的哪个版本(或者您可以定义自己的重写版本,以某种方式手动将父代和子代的功能折叠在一起)。
|
5
3
Perl的“开放”包的一个优点是,如果您对模块作者设计的方式不感兴趣,您可以更改它。
当然在这种情况下,,
|
Manny · 如何比较Perl中的字符串? 2 年前 |
BioRod · 我不能用Perl打印键和值 2 年前 |
user17227456 · Perl CLI代码无法追加字符串行 2 年前 |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 2 年前 |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 2 年前 |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 2 年前 |
Pranay Nanda · 使用regex解析许可证文件 6 年前 |