原来D里也可以象C#那样写事件

betty_betty2008 2009-01-02
俺试着对dwt 的Button 重载了+= 和 -=操作符,使之分别与addSelectionListener 和 removeSelectionListener匹配:
class TButton:Button
{
public this(Shell shell,int style)
{
super(shell,style);
}
public void opAddAssign(SelectionListener slner)
{
this.addSelectionListener(slner);
}
public void opSubAssign(SelectionListener slner)
{
this.removeSelectionListener(slner);
}
}

SelectionListener 派生类:
class ClickedListener:SelectionListener
{
public void widgetSelected(SelectionEvent e)
{
//user code here
}
public void widgetDefaultSelected(SelectionEvent e)
{
//leave blank;
}
之后在源文件中实例化几个TButton,就可以委派事件了:

ClickedListener btnOKClick=new ClickedListener;
TButton btnOK=new TButton(...);
btnOK+=btnOKClick;
...
btnOK-=btnOKClick;
...

请指点这个思路对不对头。谢了!!
Colorful 2009-01-02
关于这个,我觉得我写的这个更像 C# 中的事件。
自我感觉也比 DWT 更帅,呵呵。

详细的可以参考:

http://code.google.com/p/d-phoenix/source/browse/trunk/source/system/Event.d

单元测试里有它的用法。
betty_betty2008 2009-01-02
Colorful 写道
关于这个,我觉得我写的这个更像 C# 中的事件。
自我感觉也比 DWT 更帅,呵呵。

详细的可以参考:

http://code.google.com/p/d-phoenix/source/browse/trunk/source/system/Event.d

单元测试里有它的用法。

老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。
hurd 2009-01-02
感觉这个tango.core.Signal 做事件也不错。
Colorful 2009-01-02
betty_betty2008 写道
老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。


写中文注释的原因在于能够第一时间就可以出中文 API 文档(只要编译的时候加上 -D 就可以了)。
再就是我讨厌写英文文档。因为我要花时间考虑该咋写,呵呵。

如果老外想看英文文档,可以,等有心人把中文翻译成英文再说吧。
我是无能为力了。
时间太紧张。出英文文档暂时还没有列入计划中。
我目前正在对 d-phoenix 增加国际化的支持。
hurd 2009-01-02
ColorFul兄请教一个问题, 像socket handle,sqlite 句柄, com对象,这些东西都是一个指向外部资源的引用或者id, 在程序运行的时候转化为整数保存的话受GC影响不?  GC应该不会移动外部数据吧?
Colorful 2009-01-02
hurd 写道
ColorFul兄请教一个问题, 像socket handle,sqlite 句柄, com对象,这些东西都是一个指向外部资源的引用或者id, 在程序运行的时候转化为整数保存的话受GC影响不?  GC应该不会移动外部数据吧?


不会。因为这些资源是系统分配的,并没有在 GC Heap 上分配。
GC 在回收资源时不会去管它们。

这些资源,注意一个原则,谁分配,谁释放。
一定要记得释放。
ideage 2009-01-03
Colorful 写道
betty_betty2008 写道
老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。


写中文注释的原因在于能够第一时间就可以出中文 API 文档(只要编译的时候加上 -D 就可以了)。
再就是我讨厌写英文文档。因为我要花时间考虑该咋写,呵呵。



强烈赞成Colorful,感觉真的要写,也要写中文的。

以前写了好多不通的英文注释,日子久了,结果搞的同事都不明白,自己也糊涂了,还是母语好。
tomqyp 2009-01-04
ideage 写道



强烈赞成Colorful,感觉真的要写,也要写中文的。

以前写了好多不通的英文注释,日子久了,结果搞的同事都不明白,自己也糊涂了,还是母语好。


对对对,这个情况还很普遍
hqs7636 2009-01-04
betty_betty2008 写道

老大的那个当然是。。。超级无敌高了。只是有一点不明,就是老大的注释都是中文的,俺当然无理由反对,只是觉得用英文的注释也可以给老外看,将来少点麻烦。



大概后脑勺长包了

前两天过年,俺憋了很久  
Global site tag (gtag.js) - Google Analytics