我想知道定义库及其内容的方式背后的原因是什么。更具体地说,库需要列出所有部分,并且这些部分需要说明它们所属的库。
这种双向对我来说似乎是不必要的,我希望从库中引用这些部件就足够了。此外,在库中添加或删除文件时,有 2 个地方需要进行修改。
谁能解释一下?
我想知道定义库及其内容的方式背后的原因是什么。更具体地说,库需要列出所有部分,并且这些部分需要说明它们所属的库。
这种双向对我来说似乎是不必要的,我希望从库中引用这些部件就足够了。此外,在库中添加或删除文件时,有 2 个地方需要进行修改。
谁能解释一下?
我还没有在任何地方看到这个问题,但我也想知道这个问题,我得出的结论是,这是使用库级别隐私而不是类级别隐私的症状。
如果一个库只需要列出它的部分,那么您只需将其声明为一个部分即可访问任何库的内部属性:
library hax;
part 'packages/somelib/secret.dart';
我现在可以访问 secret.dart 中的任何私有字段或方法。我可以使用我导入的任何第三方包来做到这一点,这让隐私的概念成为了一个笑话。
类似地,如果只需要part of
声明,任何文件都可以通过声明它是该库的一部分来将自己注入到库中。
但是,通过part
在声明库的文件中要求声明以及part of
要包含在库中的文件中的声明,Dart 避免了这种情况。