问题标签 [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 - 如何将 D 数组转换为 C 可变参数?
我想将数组转换为 D 形式:
我有一个 C 函数,它需要一个 C 可变参数:
我可以做:
但这似乎是破解 C 可变参数,我宁愿直接转换为 C 可变参数,
我怎样才能做到这一点?
谢谢
documentation - 我可以依赖 shell() 的存在吗?
std.process
有一个很好的shell()
功能。
它记录在 Phobos 源中,但不是在线的。这让我在实际代码中使用它有点犹豫。它是实验性的和不稳定的,还是在线文档只是落后了?
set - D中的简单集合实现?
我在 D 的标准库中四处寻找 Set 实现,我只找到了这些:
- 二叉堆
- 红黑树
如果我能弄清楚如何使用它们,它们都可以正常工作。我从 RedBlackTree 开始(因为我已经熟悉它们的工作方式),这就是我想出的:
我知道我可以在第一个 foreach 中完成条件,但这只是一个示例,表明我需要在 Set 中添加和删除元素。这可行,但我得到编译错误:
错误:模板 std.container.RedBlackTree!(string).RedBlackTree.removeKey(U) if (isImplicitlyConvertible!(U,Elem)) 不匹配任何函数模板声明
错误:模板 std.container.RedBlackTree!(string).RedBlackTree.removeKey(U) if (isImplicitlyConvertible!(U,Elem)) 无法从参数类型推导出模板函数 !()(string
我不需要红黑树(没有重复的任何东西),速度也不是很重要。我可以做这样的事情:
标准库中是否有任何用于简单 Set 的内容?
floating-point - approxEqual() 的正确用法是什么?
起初我以为我只能依靠最大相对差异,但我错了。例如,如果a = 0.0
和b = 0.5
,它们的相对差是1.0
。在这种情况下approxEquals(lhs, rhs, maxRelDiff, maxAbsDiff)
,依靠最大绝对差来确定两个浮点数是否相等。
这两个问题是:
如果默认值 (1e-2, 1e-5) 不够精确,我如何得出一个新的最大相对差和绝对差对?是如何被
1e-2
选为1e-5
默认值的?例如,如果我选择1e-4
作为我的最大相对差,那么最大绝对差是多少?如何调整最大相对和绝对差值以与
floats
and正常工作doubles
?
d - How do I create a 2D Array in D?
This should be simple enough, but it's not.
arrays - 如何使用 D2 的 phobos std.range 封装现有数组
我想将现有数据数组(由 Python 的 Numpy Lib 创建)封装到 D2 语言中的类似数组的对象中......而不必复制数组数据......我已经使用 Python 的 cTypes Lib 进行 DLL 调用,传递数组长度和数据指针。但我仍在复制数组数据以将其放入本机 D2 数组中。似乎可能不需要通过使用 phobos 库的 std.range 类来复制数组数据。这种数组封装模式会很常见......我对 D 和这个范围类抽象都是新手...如果有 D2 示例代码来说明如何做到这一点,那就太好了。
casting - 我可以在功能上连接数字和字符串吗?
我正在尝试制作一个在字符串中嵌入数字的纯函数。明显的连接方法不起作用:
有没有一种干净、实用的方法来连接数字和字符串?我想避免编写自己的连接或转换函数,但如果必须的话,我会这样做。
d - 从 D 中的 char[] 数组中删除空格字符
从 D 中的 char[] 中删除空格的推荐方法是什么。例如使用 dmd 2.057 我有,
在编译时,这将产生这个错误:
在进行一些谷歌搜索时,我发现类似的错误已被报告为错误并已于2011 年 6 月提交,但不确定它是指同一件事还是不同的问题。
一般来说,建议从字符串中删除某些字符并维护前一个字符数组中的字符顺序的方法是什么?
在这种情况下返回
删除空白字符后
ipv6 - D- how to verify that an IP address is valid
I'm writing an HTTP parsing library (because I couldn't find a good one in pure D), and I needed to be able to validate IP addresses (for the URI field), so I wrote a couple functions to validate IP addresses:
For IPv4:
And for IPv6:
I tried initially to craft a regex for IPv6, but that was painful, especially since there are so many special cases (the ::
), and I think I ran into a regex compile bug because it was so long. Obviously, I would like to use some standard function to do this for me.
FWIW, I had the IPv4 validator implemented using std.arrays.split, then I decided to just do it this way, because otherwise I would have to detect or catch exceptions from std.conv.to!int.
Thanks so much!
Note
I would eventually like to try to get some of the code I've written into Phobos, so I would like the code to be as solid as possible.
d - 如何将 ubyte[] 解码为指定的编码?
问题是:在运行时设置编码时如何解析文件?
编码可以是:utf-8、utf-16、latin1或其他
目标是将 ubyte[] 从所选编码转换为字符串。因为当您使用 std.stdio.File.byChunk 或 std.mmFile.MmFile 时,您将 ubyte[] 作为数据。