Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
D命名约定:火卫一是如何组织的?_D_Phobos - Fatal编程技术网

D命名约定:火卫一是如何组织的?

D命名约定:火卫一是如何组织的?,d,phobos,D,Phobos,我正在制作自己的便捷函数库,并试图遵循Phobos的命名约定,但我真的很困惑。我怎么知道东西放在哪里 例子: 如果在火卫一中有类似于foldRight的功能(基本上是反向的reduce),我会在哪个模块中找到它 我可以想到几个: std.algorithm:因为它表达的是一种算法 std.array:因为我可能会在阵列上使用它 std.container:因为它用于容器,而不是单个对象 std.functional:因为它主要用于函数式编程 std.range:因为它也对范围进行操作 但我不

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

例子: 如果在火卫一中有类似于
foldRight
的功能(基本上是反向的
reduce
),我会在哪个模块中找到它

我可以想到几个:

  • std.algorithm
    :因为它表达的是一种算法
  • std.array
    :因为我可能会在阵列上使用它
  • std.container
    :因为它用于容器,而不是单个对象
  • std.functional
    :因为它主要用于函数式编程
  • std.range
    :因为它也对范围进行操作
但我不知道哪一个会是一个好的选择——我可以为其中至少三个给出令人信服的论据

惯例是什么?

  • std.algorithm
    :是的,您可以像reduce一样实现它!趣味(复古(r))

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

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

    这些是仅在内置阵列上运行的帮助器函数

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

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

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

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

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

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

+1我真的没想到会得到合理的解释,但它们似乎是有意义的(无论如何,在大多数情况下)。谢谢