`
qiezi
  • 浏览: 502104 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
引用 What's New for D 0.176 Dec 2, 2006 New/Changed Features     * Added std.bind.     * Need to recompile because:           o Associative arrays now are PTRSIZE, not PTRSIZE*2.           o Destructors no longer stored in vtbl[].           o "_arguments" now passed differently to variadic ...
DMD 0.166 特性列表中有一条:     * ncorporated Oskar Linde's patches to support member templates. 当时没注意,今天看到邮件列表中的一个帖子。才发现已经支持成员函数模板了,不过是不是在0.166中支持的就不清楚了。 没有成员函数模板的模板是不完整的。一个简单的例子,源于我的另一篇“泛型矩阵类”: class Matrix(T, int R, int C){ static assert(R > 0 && C > 0); Matrix!(T, R, C1) op ...
看样子是运行在wine上,不过竟然和windows上一样流畅。
ActiveRecord使用很方便,只需要声明映射关系,就可以方便地获取各个关联对象,而且是延迟加载。有时候这种关系延迟加载可能会严重影响性能,比如下面这个例子: class User < ActiveRecord::Base end class Post < ActiveRecord::Base has_many :replies end class Reply < ActiveRecord::Base belongs_to :user belongs_to :post end 我们在查询某一个帖子的同时,希望取到所有回复以及回复者 ...
一、栈上分配对象 C++可以轻易实现在栈上和堆上分配对象,例如下面的代码: class Foo{}; Foo foo; //在栈上分配 Foo* foo = new Foo; //在堆上分配 在栈上分配对象是C++相较于java的一大优势,可以轻松实现RAII。 D语言也可以实现这2种分配方式: Foo foo = new Foo; // 在GC堆上分配 scope Foo foo = new Foo; // 在栈上分配 C++和D在栈上分配的对象,在分配时都会调用构造函数,超出作用域时都会自动析构。 这里顺便提一下0.175版以前,D的栈上对象的一个小陷阱: ...
twisted是一个优秀的python网络开发库,以前用它做过一个视频服务器,感觉它的接口应该比ACE更适合D一些。 twisted虽然是用python所写,但借助于Zope的interface模拟,很大程度上改善了动态语言开发的无接口约束的缺点。 由于它有一整套规范化的接口,所以应该先把它的接口转化过来,方便编写测试。简单看了一下TwistedCore,这个是twisted最基本的部分,先把twisted.internet转化过来吧。 python反射支持得不错,ZopeInterface也做了一些工作,所以可以利用它帮我完成一部分工作。我写了个脚本来转化这些接口: from twi ...
主要是BUG修复,朝1.0大步迈近啊。还有260多个BUG,1月1日前全部修复估计够呛。不过Walter说尽量做到最好。 引用 What's New for D 0.175 Nov 25, 2006 New/Changed Features     * Added == super to IsExpressions.     * Class variables declared with scope are now allocated on the stack. Bugs Fixed     * Fixed Bugzilla 222: Internal error: ..\ztc\co ...
测试写到什么程度算足够? 这个帖子对单元测试作了些探讨,代码覆盖率检查是检验单元测试的一项指标。 DMD编译器内建了代码覆盖率检查,根据上面这个帖子我们写一个测试: int oddNumber(int index){ switch (index){ case 1: return 1; case 2: return 2; case 3: return 5; case 4: return 8; } throw new Exception("Unsupported operation"); } unittest{ ass ...
RAII(Resource Acquisition Is Initialization 资源获得即初始化)是管理资源的一种方式,它在构造对象时初始化资源,析构对象时释放资源,有时也把这2个过程分为RAII和RRID(Resource Release Is Destruction 资源释放即析构),这通常需要语言支持。 大部分语言都支持RAII,RRID则有少数语言不支持,这些语言无法在域结束时自动销毁栈上分配的对象,java就是这种。 先来看看一个简单的JDBC调用过程: Connection conn = null; Statement stmt = null; ResultSet ...
is关键字有2种用法,可以当作===来用(===和!==操作符已经废弃了),它是全等判断,相当于java里的==,而==则和java里的equals同义。值类型(包括简单类型、结构)的全等判断和等于判断是相同的,类对象的全等判断是判断对象指 ...

DMD 0.174 发布

    博客分类:
  • D
引用 Nov 9, 2006 New/Changed Features     * Implemented std.typetuple.     * Implemented std.traits.     * Added .funcptr property for delegates.     * Added .tupleof property for structs and classes.     * Slicing and indexing of type tuples now supported.     * Variable declarations can now be decla ...
说是改良,不过C++的死忠份子可能认为是对C++的亵渎,随便怎么说,就说是不一样的地方吧。 最近D语言没什么大动作,我又参与到xruby的builtin开发中,圈子里有点冷清。有留言说这里没什么人关注,的确是这样,抽点时间来写个简单的比较。 这里有一份各种语言的比较,大致可以了解D语言要对C++改些什么。 http://digitalmars.com/d/comparison.html 下面没什么顺序,想到什么就先列出来,可能随时扩充。 1、内存管理。 内存管理在C++中非常难以掌握,大多数C++程序员没有写过内存管理程序,多数C++程序中存在内存问题,C++程序员终其一生都在与内存管 ...
这几天在折腾网页界面,其中有些要求位置、大小控制得比较精细,而且要在4个主流浏览器(IE, FF, Safari, Opera)上都一致。 经过测试,发现主要是border在IE和其它3个之间表现不一致。IE的border是往里面画的,这样就没有增加宽度,其它浏览器的border是往外画的。如果直接在一个图片上加border,结果大小就有偏差,最好的做法是不在图片上加,而在它外面套一个DIV,给这个DIV指定border即可,在几个浏览器上显示结果完全没有偏差。 outline应该是往外画的,但在opera上它会有一些不良影响,在IE上似乎根本没有使用这个属性,所以就不考虑它了。 另外一个 ...
做了一个图片编辑窗口,用来做裁剪、旋转、镜像操作。 原来是想用一个黑色半透明的mask遮住图片,再用一个div设置背景图和正一样,拖动时设置背景图偏移即可。后来发现backgroundPosition在IE和FF中不一致。 改成一张背景加4个mask的方式,不存在图像对不准的问题。 新的问题是IE中的border的宽度是包含在div宽度里的,其它浏览器则不包括这个宽度。 尝试使用outline代替border,这个应该是比较一致,不过在opera中,快速拖动时会出现多条白线。 最后还是选了第2种方式,需要判断浏览器类型,如果不是IE,就要把拖拽框的宽和高各减去2个边框宽。 ...
引用 D 1.0 for Jan 1, 2007 Digital Mars Walter Bright (newshound@digitalmars.com) 2006/11/09 15:08 We'll release it one way or another Jan 1. And then we'll move on! 看样子应该是DMD 1.0,D语言也要出第一个正式的规范。经过了170多个版本以及5年的跨度,总算是要有一个正式版了。 T shirt也有人在做,很漂亮哇,我喜欢这血红血红的东西: http://www.zazzle.com/pramga/product/235 ...
Global site tag (gtag.js) - Google Analytics