标签: d

D的范围是否失败/成功/退出是否必要?

当使用具有try/catch/finally的语言时,D的失败/成功/退出范围语句是否仍然有用?D似乎没有最终可以解释为什么在D中使用这些语句.但是使用像C#这样的语言是否有用?我正在设计一种语言,所以如果我看到很多专业人士,我会加入它.

c# c++ d

18
推荐指数
5
解决办法
3485
查看次数

如何使用D的C库?

今天我听说过D编程,它与C代码兼容.不过我还没有找到任何关于是否可以使用D的GT库或PortAudio等C库的信息?如果有可能,你能解释一下如何做到这一点吗?

c d

18
推荐指数
1
解决办法
4283
查看次数

ptrdiff_t太小了?

我一直想知道:根据定义,ptrdiff_t应该能够保持任何两个指针的差异吗?当两个指针太远时怎么会失败呢?(我没有指出任何特定语言......我指的是所有具有此类型的语言.)

(例如1,0xFFFFFFFF当你有32位指针时,从带有地址的字节指针中减去带有地址的指针,它会溢出符号位...)

c c++ d

17
推荐指数
2
解决办法
1761
查看次数

为什么D缺少容器类?

我习惯了C++ STL容器.D有数组,关联数组和字符串,但其余部分在哪里?我知道std.container,但据我所知它只有一个容器,红黑树,如果我需要类似的东西,我可以使用它std::set.但是,如果我需要一个list怎么办?我应该使用数组吗?

std::vector - > array

std::deque - > ?

std::queue - > ?

std::stack - > ? maybe array and std.container functions ?

std::priority_queue - > BinaryHeap

std::list - > ?

std::set - > std.container RedBlackTree

std::multiset - > ?

std::unordered_set - > ?

std::map - > associative arrays

std::multimap - > ?

std::unordered_map - > ?

有没有计划支持任何失踪人员?

d data-structures

17
推荐指数
2
解决办法
2535
查看次数

是否存在阻止采用D范围的C++语言障碍?

这是一个C++/D交叉问题.的d的编程语言具有范围件是在对比到C++库如Boost.Range -不是基于迭代器对.官方的C++ Ranges Study Group似乎陷入了制定技术规范的困境.

问题:当前的C++ 11或即将推出的C++ 14标准是否有任何阻碍采用D范围的障碍 - 以及<algorithm>- 批发的适当范围版本?

我不太了解D或它的范围,但它们似乎是懒惰和可组合的,并且能够提供STL算法的超集.鉴于他们声称D的成功,作为C++库可能会非常好.我想知道D的独特功能(例如字符串mixins,统一函数调用语法)是如何实现其范围的,以及C++是否可以模仿而不需要太多努力(例如C++ 14 constexpr看起来与D编译时功能评估非常相似)

注意:我正在寻求技术答案,而不是D系列作为C++库的正确设计.

c++ d range c++11 c++14

17
推荐指数
2
解决办法
1281
查看次数

D:找到具有特定属性的所有函数

目前是否可以跨模块扫描/查询/迭代所有具有某些属性的函数(或类)?

例如:


source/packageA/something.d:

@sillyWalk(10)
void doSomething()
{
}
Run Code Online (Sandbox Code Playgroud)

source/packageB/anotherThing.d:

@sillyWalk(50)
void anotherThing()
{
}
Run Code Online (Sandbox Code Playgroud)

source/main.d:

void main()
{
    for (func; /* All @sillWalk ... */) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

d

17
推荐指数
1
解决办法
966
查看次数

Walter Bright使用"冗余"这个词......或者"哎呀这意味着什么?"

所以我正在阅读Walter Bright关于Bitwise D语言的采访(http://www.bitwisemag.com/copy/programming/d/interview/d_programming_language.html),我看到了这个非常有趣的关于语言的引用解析:

然而,从理论角度来看,能够生成良好的诊断要求语法中存在冗余.冗余用于猜测预期的内容,冗余越多,猜测的可能性就越大.它就像英语一样 - 如果我们偶尔拼写错误,或者如果一个单词缺失,冗余使我们能够正确地猜出其含义.如果语言中没有冗余,则任何随机字符序列都是有效的程序.

而现在我正试图弄清楚当他说"冗余"时他意味着什么.

我几乎无法绕过最后一部分,在那里他提到可以使用一种语言,其中"任何随机的字符序列都是有效的程序".我被告知有三种错误:句法,运行时和语义.是否存在唯一可能的错误是语义的语言?这样的集会吗?机器代码怎么样?

error-handling parsing programming-languages d semantics

16
推荐指数
5
解决办法
770
查看次数

为什么Phobos使用enum作为常量?

为什么Phobos enum用来定义常量?例如,在std.math中:

enum real E = 2.7182818284590452354L;
Run Code Online (Sandbox Code Playgroud)

为什么不使用全球immutable?有什么优势/劣势enumimmutable

enums d phobos

16
推荐指数
1
解决办法
460
查看次数

为什么我不能将字符串键存储在关联数组中?

我是D编程语言的新手,刚开始阅读D编程语言书.

尝试一个关联数组示例代码时遇到错误

#!/usr/bin/rdmd
import std.stdio, std.string;

void main() {
    uint[string] dict;
    foreach (line; stdin.byLine()) {
        foreach (word; splitter(strip(line))) {
            if (word in dict) continue;
            auto newId = dict.length;
            dict[word] = newId;
            writeln(newId, '\t', word);
        }   
    }   
}
Run Code Online (Sandbox Code Playgroud)

DMD显示此错误消息:

./vocab.d(11):错误:关联数组只能用不可变键赋值,而不是char []

我正在使用DMD编译2.051

我猜测关联数组的规则自TDPL书以来已经发生了变化.

我应该如何使用带有字符串键的关联数组?

谢谢.

更新:

我在本书的后半部分找到了解决方案.

在放入数组之前使用string.idup创建重复的不可变值.

所以

dict[word.idup] = newId;
Run Code Online (Sandbox Code Playgroud)

会做的.

但这有效吗?

string associative-array d

16
推荐指数
1
解决办法
2100
查看次数

从D调用C++

我已经阅读了解释如何从D解释C++的文档:http://dlang.org/cpp_interface.html.然而,有一些事情对我来说并不十分清楚.

以D网站上提供的示例为例:

#include <iostream>

using namespace std;

class D {
   public:
   virtual int bar(int i, int j, int k)
   {
       cout << "i = " << i << endl;
       cout << "j = " << j << endl;
       cout << "k = " << k << endl;
       return 8;
   }
};

D *getD() {
   D *d = new D();
   return d;
}
Run Code Online (Sandbox Code Playgroud)

然后可以从D调用C++类,如下所示:

extern (C++) {
    interface D {
        int bar(int i, int j, int k); …
Run Code Online (Sandbox Code Playgroud)

c++ d

16
推荐指数
2
解决办法
1072
查看次数