[疑难] D语言的陷阱
Colorful
2007-05-10
懒的粘贴复制了。
直接给出地址,哈哈。 http://colorful1982.blog.sohu.com/45473453.html |
|
oldrev
2007-05-10
很好的文章,不过配色看起来很费劲阿。
|
|
oldrev
2007-05-10
我感觉你文章里说的问题基本上D specs 里都有记载阿,可能只是理念不同而已。
比如最后一个问题,不同接口中的同名同参数方法是会被合并的,我记得是在文档的某处有记载的。 import std.stdio; interface IA { void foo(); } interface IB { void foo(); } class C : IA, IB { override void foo() { writefln("C.foo()"); } } //错误设计 class D : C, IA, IB { alias C.foo bar; override void foo() { writefln("D.foo()"); } } void main() { D d = new D; d.foo(); d.bar(); } 运行结果: D.foo() D.foo() |
|
Colorful
2007-05-10
呵呵,对于熟悉的人来说,陷阱也就不能称其为陷阱了。
D语言规范能称其为规范,自然是面面俱到。但是相对来说,就比较乏味了。 |
|
oldrev
2007-05-10
出本叫 The D Programming Language 的书就行了
|
|
jinheking
2007-05-11
好文章
|
|
qiezi
2007-05-12
我刚刚遇到个lazy陷阱:
void foo(void delegate() dg){ //... dg(); } foo({writefln("aa");}); 使用lazy以后: void foo(lazy void dg){ //... dg(); } foo({writefln("aa");}); 由于可能有多条语句,所以还是喜欢大括号这种委托直接量方式,不过传递给lazy时被它再悄悄包装一层,就不会打印出任何东西了。。。 |
|
oldrev
2007-05-12
说来惭愧,我还没用过 lazy 哪
|
|
qiezi
2007-05-15
我一直以为const会增大结构呢,C++里面是这样的。const成员和static很像:
struct F { const int a = 1; const int b = 1; const int c = 1; const int d = 1; const int e = 1; const int f = 1; int aa = 1; } F.sizeof大小是4,如果去掉aa,大小是1(这和C++一致)。 |