19

我想知道定义库及其内容的方式背后的原因是什么。更具体地说,库需要列出所有部分,并且这些部分需要说明它们所属的库。

这种双向对我来说似乎是不必要的,我希望从库中引用这些部件就足够了。此外,在库中添加或删除文件时,有 2 个地方需要进行修改。

谁能解释一下?

4

2 回答 2

10

我还没有在任何地方看到这个问题,但我也想知道这个问题,我得出的结论是,这是使用库级别隐私而不是类级别隐私的症状。

如果一个库只需要列出它的部分,那么您只需将其声明为一个部分即可访问任何库的内部属性:

library hax;

part 'packages/somelib/secret.dart';

我现在可以访问 secret.dart 中的任何私有字段或方法。我可以使用我导入的任何第三方包来做到这一点,这让隐私的概念成为了一个笑话。

类似地,如果只需要part of声明,任何文件都可以通过声明它是该库的一部分来将自己注入到库中。

但是,通过part在声明库的文件中要求声明以及part of要包含在库中的文件中的声明,Dart 避免了这种情况。

于 2013-08-23T15:16:10.440 回答
5

您可以在此线程中找到一些信息。

从吉拉德布拉查:

最初,零件与它们的库无关。人们抱怨是因为很难提供良好的工具支持(即,当您打开一个部件而不是使用它的库时,您处于什么范围内?)。

于 2013-08-23T15:26:00.463 回答