15

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

例子:

如果有像foldRightPhobos 这样的功能(基本上reduce是反向的),我会在哪个模块中找到它?

我能想到几个:

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

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

什么是约定?

4

1 回答 1

17
  • std.algorithm: 是的,你可以像 reduce!fun(retro(r)) 那样实现它

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

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

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

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

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

  • std.functional:不,因为它不是在函数上运行,而是在范围上运行

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

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

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

于 2011-08-07T21:16:48.607 回答