【问题标题】:D naming conventions: How is Phobos organized?D 命名约定:Phobos 是如何组织的?
【发布时间】:2011-08-07 20:43:48
【问题描述】:

我正在制作自己的小函数库,并尝试遵循 Phobos 的命名约定,但我真的很困惑。我怎么知道东西适合放在哪里?

示例:

如果Phobos中有foldRight之类的功能(基本上是reduce在相反方向),我会在哪个模块中找到它?

我能想到几个:

  • std.algorithm: 因为它是在表达一种算法
  • std.array: 因为我很可能会在数组上使用它
  • std.container:因为它用在容器上,而不是单个对象上
  • std.functional:因为它主要用在函数式编程中
  • std.range:因为它也在范围内运行

但我不知道哪一个是一个不错的选择——我可以为其中至少 3 个提供令人信服的论据。

约定是什么?

【问题讨论】:

    标签: d phobos


    【解决方案1】:
    • std.algorithm: 是的,你可以像 reduce!fun(retro(r)) 那样实现它

      此模块指定在序列上运行的算法

    • std.array: 不,因为它也可以在其他范围内运行

      这些是仅在内置数组上运行的辅助函数

    • std.container: 不,因为它没有定义数据结构(如树集)

      这定义了未内置于语言中的数据结构(目前是链表、二叉树和内存管理方面的确定性数组)

    • std.functional: 不,因为它不是对函数而是对范围进行操作

      这个接受一个函数并返回一个不同的函数

    • std.range:不,因为它没有定义范围或提供不同的方式来迭代一个范围

    缺乏清晰的结构是我对 phobos 库 TBH 的抱怨之一,但真正阅读文档的第一段应该会告诉您相当多的函数放置位置

    【讨论】:

    • +1 我真的没想到会得到合理的解释,但它们似乎是有道理的(无论如何大多数情况下)。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2010-09-12
    相关资源
    最近更新 更多