我需要将BitArray(从std.bitmanip)分成两半.到目前为止,我已经发现切片没有实现,迭代它并且追加或分配产生超出范围的异常.我试图将它转换为其他类型(它适合long/ulong)但这似乎太麻烦了,当我尝试初始化新的BitArrays时它也会给我一个超出范围的异常,如下所示:
BitArray[] C, D;
long lg = toLong(bitArr);
C[0].init(cast(void[])((lg >> 28) & 0x0fff_ffff), 28);
Run Code Online (Sandbox Code Playgroud)
对我的问题有一个更简单的解决方案吗?如果没有,我做错了什么?
我想编写一个可变参数函数,它应该有1个参数,它不是string类型的可选参数,第二个字符串是可选的.我已经阅读了关于可变函数的语言规范,但考虑到D的许多选项,我想知道哪个是我问题的合适解决方案.
另外我应该如何使用强制转换和指针来复制指向的字符串void* _argptr(字符串在D中不可变的事实让我困惑).
编辑:我想要的是:
string foo (string nonopt, ...) { /*code*/ }
//...
string a = "x@a.t", b = "a.t";
auto s = foo(a);
auto s2 = foo(a, b);
Run Code Online (Sandbox Code Playgroud)