【问题标题】:What's the reasoning behind "part" and "part of" in Dart libraries?Dart 库中“part”和“part of”背后的原因是什么?
【发布时间】:2013-08-23 13:00:50
【问题描述】:

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

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

谁能解释一下?

【问题讨论】:

  • 因为图书馆并不是很多人想的那样。 Dart 中的库不是一个模块。我只找到了一个关于什么是图书馆的解释。这听起来像"Libraries are units of privacy"。不多也不少。

标签: dart


【解决方案1】:

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

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

library hax;

part 'packages/somelib/secret.dart';

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

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

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

【讨论】:

  • 确实有道理。我从来没有这样想过。
  • part of 引用一个名称,如果这些库具有相同的名称,则可以在多个库中包含该部分。看到这个message from Kasper Lund
【解决方案2】:

您可以在this thread找到一些信息。

来自吉拉德布拉查:

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

【讨论】:

  • 来自 Gilad 的回答不清楚是哪些人抱怨的。想写好工具支持的人?或者想要获得良好工具支持的人?
  • 感谢亚历山大的参考。
猜你喜欢
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多