标签: phobos

返回动态类型

我知道模板

T add(T)(T a, Tb){
    return  a + b;
}
Run Code Online (Sandbox Code Playgroud)

但这需要用户询问哪种类型将返回,我想在里面计算哪种类型将返回如下:

T getField( size_t column ){
    if( column == 0 )
        T = int;
    else
        T = string;
    return to!T("1");
}
Run Code Online (Sandbox Code Playgroud)

我不知道我是否可以投射对象并改变原型.

谢谢大家

d variant dynamic-typing phobos

3
推荐指数
1
解决办法
307
查看次数

我可以依赖shell()的存在吗?

std.process有一个很好的shell()功能.

import std.process;
import std.stdio;

void main()
{
    string Output = shell("ls .");
    writeln("The contents of this directory are:");
    write(Output);
}
Run Code Online (Sandbox Code Playgroud)

它在Phobos源中有记录,但不在线.这让我在实际代码中使用它有点犹豫.它是实验性的还是不稳定的,还是在线文档落后?

documentation d standard-library phobos

3
推荐指数
1
解决办法
94
查看次数

检查字符串是否以D/phobos中的子字符串开头?

到目前为止我还没有找到如何最容易检查字符串是否以D中的某个字符开头.

我想要的东西:

if (my_str.startswith("/")) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

我发现最接近的是"chompPrefix"(这里),但这不是我想要的.

d phobos

3
推荐指数
1
解决办法
508
查看次数

D并行循环

首先,D如何创建并行foreach(底层逻辑)?

int main(string[] args)
{
    int[] arr;
    arr.length = 100000000;
    /* Why it is working?, it's simple foreach which working with
       reference to int from arr, parallel function return ParallelForeach!R
       (ParallelForeach!int[]), but I don't know what it is.
       Parallel function is part od phobos library, not D builtin function, then what
       kind of magic is used for this? */
    foreach (ref e;parallel(arr))
    {
        e = 100;
    }
    foreach (ref e;parallel(arr))
    {
        e *= e;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

第二,为什么它比简单的foreach慢?最后,如果我创建自己的taskPool(并且不使用全局taskPool对象),程序永远不会结束.为什么?

d phobos

3
推荐指数
1
解决办法
371
查看次数

Date roll在哪里有用?

我正在阅读Phobos文档.有时我无法理解某些方法的逻辑.

日期滚动

将给定的年数或月数添加到此日期.负数将减去.轧制和添加之间的区别在于轧制不会影响较大的单元.

也许Phobos不是很好考虑,也许我不明白哪里可以提供帮助.

如果我在2013-07-01添加例如200天,我预计将获得2014年,但不是2013年.

任何人都可以解释这个逻辑吗?

datetime d phobos

3
推荐指数
2
解决办法
226
查看次数

从D中的字符串中删除子字符串

如何删除另一个字符串中出现的所有字符串?我可以使用以下代码执行此操作:

std.array.replace: "the string".replace("the", "")
Run Code Online (Sandbox Code Playgroud)

但我想知道在phobos中是否有专门的功能?

d phobos

3
推荐指数
1
解决办法
129
查看次数

如何将D数组转换为C variadic?

我想在D形式中转换一个数组:

string[] arrayStr = [ "hi, "is fun", "use D programming" ];
Run Code Online (Sandbox Code Playgroud)

我有一个C函数,它采用C变量:

void c_func( const char* format, ... );
Run Code Online (Sandbox Code Playgroud)

我可以:

foreach(str; arrayStr)
    func( str );
Run Code Online (Sandbox Code Playgroud)

但这似乎是攻击C变量,我宁愿直接转换为C vararg,

我怎样才能做到这一点?

谢谢

d variadic phobos

2
推荐指数
1
解决办法
138
查看次数

phobos(D的标准库)是否包含字符串类型的"endsWith"?

我需要一个函数来测试一个字符串是否以某个后缀结尾.我可以使用'lastIndexOf'来执行此任务,但我想知道是否有标准的phobos功能?

d phobos

2
推荐指数
1
解决办法
90
查看次数

用于将uint转换为二进制字符串的Phobos库函数

是否存在将无符号整数转换为二进制字符串的Phobos函数?我已经搜索过,但找不到 - 只是想确保我不是通过编写自己的方法来重新发明轮子.

d phobos

2
推荐指数
1
解决办法
65
查看次数

How to use tolower in D

I want to to put the first letter of a string into lowercase in D.

As a string is imutable in D, there doesn't seem to be a simple way.

I came up with this:

string mystr = "BookRef";
string outval = toLower( mystr[0..1] ) ~ mystr[1..$]; 
writeln( "my outval: ", outval );
Run Code Online (Sandbox Code Playgroud)

Is there an easier way ?

d phobos

2
推荐指数
1
解决办法
59
查看次数