问题标签 [phobos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
d - phobos(D 的标准库)是否包含字符串类型的“endsWith”?
我需要一个函数来测试字符串是否以某些后缀结尾。我可以使用“lastIndexOf”来完成这项任务,但我想知道是否有标准的 phobos 功能?
d - 用于将 uint 转换为二进制字符串的 Phobos 库函数
有没有将无符号整数转换为二进制字符串的 Phobos 函数?我已经搜索过,但找不到 - 只是想确保我不会通过自己编写轮子来重新发明轮子。
function - 如何在 D 中模拟标准库函数
我有一个函数,它在文件名上调用 isFile(来自 std.file),然后继续追加 .1、.2、.3 等,检查其中的每一个是否存在。
我想对函数进行单元测试,但为此我需要模拟 isFile。
我环顾四周,找到了模拟类而不是单个函数的方法。
json - std.json - 与 TRUE、FALSE 和 NULL 值有点混淆
作为我正在处理的程序的一部分,我正在查看std.json
库,我对如何从JSONValue
类型被推断为 或 的 sTRUE
中FALSE
获取数据感到有些困惑NULL
。
例如,如果我解析以下 JSON:
然后,我可以通过执行以下操作来提取属性中保存的字符串"foo"
:
但假设我有这样的 JSON:
我需要做什么才能获得 和 的属性"foo"
值?"bar"
"baz"
json - std.json - 检查 JSONValue 是否具有特定字段的任何方法
假设我有一个未知的 JSON,我想检查它是否有类似这样的形式:
任何东西在哪里stuff
——整数、对象等等。如果我做这样的事情:
我会得到一个段错误。有什么方法可以优雅地处理这个问题(返回 null、抛出异常、除了段错误之外的任何东西)?
d - std.algorithm.find 是否应该要求引用范围元素?
我一直在研究基于类的有限随机访问范围。在对其进行一些测试时:
我在 GDC 4.9.2 中遇到了这个编译错误,关于上面片段中的最后一行:“algorithm.d|4838|error: foreach: cannot make e ref”
错误指向std.algorithm.find
(find_if 变体,采用范围和谓词)中的这段代码,它确实引用了每个元素foreach
:
这很可能发生,因为我提供了一个opApply
不提供ref
参数的实现(该类也不ref
向任何其他成员函数提供返回类型)。
我可以改变它,但真正困扰我的是,现在范围类符合函数的先决条件,并且foreach
迭代仍然应该与它们一起工作。从文档中引用:
结构和类对象的迭代可以用范围来完成。对于
foreach
,这意味着必须定义以下属性和方法:特性:
.empty
如果没有更多元素,则返回 true.front
返回范围的最左边的元素方法:
.popFront()
将范围的左边缘向右移动一位
所有这些都提供了(否则它不会是随机访问范围),所以它应该使用它们。相反,它可能正在寻找下面描述的替代迭代方法:
如果聚合表达式是结构或类对象,并且范围属性不存在,则 foreach 由特殊
opApply
成员函数定义,foreach_reverse 行为由特殊opApplyReverse
成员函数定义。这些函数具有以下类型:
int opApply(int delegate(ref Type [, ...]) dg);
根据我的解释,不应该寻找。
也 quoting std.algorithm.all
,这似乎也不需要迭代引用:
bool all(Range)(Range range) if (isInputRange!Range && is(typeof(unaryFun!pred(range.front))));
当且仅当在输入范围范围内找到的所有值 v 都满足谓词 pred 时返回 true。(至多)对 pred 执行 Ο(range.length) 评估。
那么这是 Phobos 库中的一个错误,std.algorithm.find
应该首先按值迭代吗?还是我错过了什么?
file-io - 来自文件的字节 InputRange
如何从文件中轻松构建原始的逐字节 InputRange/ForwardRange/RandomAccessRange?
datetime - 日期滚动在哪里有用?
我正在阅读 Phobos 文档。有时我无法理解某些方法的逻辑。
将给定的年数或月数添加到此日期。负数将减去。滚动和添加之间的区别在于滚动不会影响较大的单位。
也许是火卫一不好考虑,也许我不明白它在哪里有帮助。
如果我添加到 2013-07-01 例如 200 天,我希望得到 2014 年,而不是 2013 年。
有人能解释一下逻辑吗?
d - 从D中的字符串中删除子字符串
如何删除另一个字符串中所有出现的字符串?我可以使用以下代码执行此操作:
但我想知道在火卫一中是否有专门的功能?
d - 为什么我不能将 std.algorithm.count 与谓词函数一起使用
以下代码无法编译:
带有错误消息:
但是[标准库(http://dlang.org/phobos/std_algorithm_searching.html#.count)清楚地表明,有一个谓词的重载,计算谓词返回true的count
所有元素。R
那么为什么当我尝试使用count
这种方式时编译器会抱怨呢?