问题标签 [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.

0 投票
2 回答
466 浏览

recursion - d 递归语言并发

我一直在尝试使用 d 语言的参与者模型来实现阶乘函数。我的目标是使用创建actor来单独计算每个部分e产生一个新的actor来制作下一个。我只是D的初学者,所以我只是在学习如何使用该语言。我的目标是将阶乘实施扩展到更多。这只是一个测试。

这是我的问题:我正在尝试使用递归来实现阶乘;事实函数将为行中的下一个数字创建一个新的事实线程,除非它已达到基本条件。

我的代码:

我什至不知道这是否可能,无论如何它都行不通。如果我尝试添加一个 spwn 实际上函数,它会返回以下错误:

那么,有可能做我想做的事吗?如何?如果没有,有没有计划让这样的事情成为可能?

请帮忙。

0 投票
3 回答
4483 浏览

casting - D中的整数到字符串转换

我如何在 D 中将整数转换为字符串?就像是

谷歌为我提供了如何使用 tango 的答案,但我想要 phobos 版本。

0 投票
1 回答
145 浏览

unicode - Unicode 转换

配置:

  • 操作系统:Windows 7(32 位)
  • 使用 Phobos 标准库的 DMD 2.58

我的意图:

我开始移植 2007 年编写的旧包(10 个模块)。它具有完整的 unicode 支持,我想保留这种能力。

class UnicodeBom(T)它的作者为此目的编写了一个特定的模块(

我清理了Tango所有模块中的任何代码片段,并成功地在我的盒子上工作(肯定是在单元/模块级别)到目前为止,只有 10 个模块中的 4 个。


代码片段:

在哪里

  • st(参数)是std.stream.Stream
  • mSourceBuffer(私有字段)是一个wchar[]

引用:

摘自与final T[] decode (void[] content)方法相关的代码文档:

转换提供的内容。检查内容是否有 BOM 签名,该签名已被剥离。如果根据编码类型不应该存在签名,则如果存在签名,则会引发异常。相反,如果当前编码期望存在的签名不存在已知签名,则会引发异常


我的问题:

是否有使用开箱即用Druntime和/或Phobos资源导致相同结果的最新和更惯用的方法(即加载 UTF8/16/32 文件并将它们转换为 wchar[] 而没有 BOM)?

提前致谢。

0 投票
3 回答
532 浏览

c - 如果您使用 C 库,D 是否与 C 向后兼容?

如果我导入 std.c 库而不是将库包含在 C 中,C 代码是否会使用 D 编译器编译,或者是否存在其他后置词兼容性问题?

0 投票
4 回答
310 浏览

d - 你如何在 D 中使用范围?

每当我尝试在 D 中使用范围时,我都会惨遭失败。

在 D 中使用范围的正确方法是什么?(请参阅内联评论以了解我的困惑。)

0 投票
1 回答
406 浏览

d - std.algorithm.joiner(string[],string) - 为什么结果元素是 dchar 而不是 char?

我尝试编译以下代码:

编译以dmd错误结束:

更改char zdchar z确实修复了错误消息,但我很感兴趣它为什么首先出现。

为什么结果joiner(string[],string).front()是 dchar 而不是 char?

(文档http://dlang.org/phobos/std_algorithm.html#joiner对此没有任何内容)

0 投票
1 回答
145 浏览

d - std.complex 设计背后的原因是什么?

这意味着我可以拥有Complex!(immutable float),但我永远不能将它的opBinary功能用于Complex!(immutable float). 那么,为什么 std.complex 会以这种方式实现呢?

这里是opBinary. 它调用opOpAssign,它不适用于immutable,因此出现错误。

0 投票
1 回答
192 浏览

d - 不能从 D 中的 std.range 切片 Take!R?

我正在尝试使用切片运算符从 std.range 获取 take 函数的返回值的切片。我的代码:

在这种情况下,Take!R 只是 char[] 的别名,我希望它能够编译。但是,编译器告诉我Take!(char[]) cannot be sliced with []. 再举一个例子:

这将毫无问题地编译和运行,打印 [1, 2, 3, 4, 5]。在这一点上,我完全困惑为什么第一个例子不起作用,而第二个例子起作用。

0 投票
3 回答
326 浏览

io - D 将标准输出重定向到函数

我想将所有控制台输出重定向到我自己的 GUI 控制台,包括对 C 写函数的所有调用。

我尝试过的事情:

  • 创建一个新的流类,但 stdio.stdout 是一个文件,您不能为其分配流
  • 完全创建一个新文件类,但不能扩展结构

我是否需要更深入地了解 C 绑定?非常感谢任何帮助。

0 投票
1 回答
127 浏览

d - 使用 std.range.Lockstep 作为输入范围

复制http://forum.dlang.org/thread/arlokcqodltcazdqqlby@forum.dlang.org来比较回答速度:)

我基本上希望能够做这样的事情:

auto result = map!( (a, b) => a+b )( lockstep(range1, range2) );

是否有任何标准的简短方法可以使用 opApply (即 Lockstep )将输入范围包装在 struct 周围?

另外,如何将 Lockstep 重新设计为适当的范围?我可以提出拉取请求,但不确定当前的意图。