【问题标题】:How to deal with internal library functionality in dart如何处理 dart 中的内部库功能
【发布时间】:2014-04-11 19:13:42
【问题描述】:

我可能过于复杂了。但我有一个我正在制作的图书馆。它将有两部分,外部的“任何人都可以玩这些”的东西和内部的东西。我的意图是内部的东西保持相对不暴露,以尝试保持界面清洁并易于推理。所以这就是我正在做的事情(告诉我这是否疯狂)。

对于外部事物,我有库,然后是应该作为该库的“一部分”公开的所有内容。对于内部的东西,我有一个单独的“my_library_internal”库,它的所有类都是内部库类的一部分。

事情变得奇怪的地方。内部库将外部库导入到所有内部库方法中,以使用外部库对象。这最终会导致编译器发出警告(尽管它似乎编译得很好)。

这是执行此操作的惯用方式吗,还是我应该只制作与该库有关的所有内容,无论是内部还是外部,都成为其中的一部分,而不必担心过度暴露。

【问题讨论】:

    标签: dart dart-pub


    【解决方案1】:

    正如 Dart 文档的 Important Concepts 页面中所写,它的工作方式是:

    因此,请将您的内部类型与公共类型放在同一个库中,并在它们前面加上下划线 _

    【讨论】:

      【解决方案2】:

      这看起来很好,甚至不需要引起警告。

      如果您只有一个库,您可以使用库私有成员并将它们全部放在同一个库中 (var _private = foo;),但如果您有多个共享“私有”功能的公开库,则使用共享的“隐藏”库是最简单的方法。

      你不能真的隐藏共享的隐藏库 - 如果有人想导入它,他们可以,但是如果他们这样做的话,他们可能会使用 dart:mirrors 造成更大的伤害想要。

      【讨论】:

      • 这行得通,但我更喜欢让的回答。在我不想暴露的类型前面加上_ 就完成了我的拍摄目标。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2021-05-19
      相关资源
      最近更新 更多