`
qiezi
  • 浏览: 497876 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
在D语言中,一个方法你可以得到它的指针(函数指针或委托),但不能获得它的名字,这点和C++相似。 不过今天看到PyD的一个例子: import pyd.pyd; import std.stdio; void hello_func() { writefln("Hello, world!"); } extern (C) void PydMain() { def!(hello_func); module_init(); } >>> import testdll >>> testd ...
前阵子论坛上有人问我D语言做函数编程怎样,老实说我没怎么想过这问题。现在想来,D语言可以有函数指针、委托、仿函数(opCall),所以它和C++基本上没什么不一样。 想起了python,虽然以前没研究过它的函数编程,不过还是搜索了一下,IBM Developer Works的“可爱的python系列”格式乱得没法看,就没继续看了。从中找出python的几个算子比如map, reduce, filter,在D语言中实现这个应该也是简单的: R[] map(R, T)(R delegate(T) dg, T[] arr){ R[] result = new R[arr.length]; ...
这2个语言的比较怪怪的,我最近转换了一些twisted的源文件到D,发现有些东西直接抄过来还是不可行的。 一、参数 比如twisted的callLater: class IReactorTime(Interface): """Time methods that a Reactor should implement. """ def callLater(self, delay, callable, *args, **kw): """Call a fu ...
D语言动态数组可以在运行期改变大小,这和C++的vector相似。似乎记得“STL源码分析”一书中提到vector的内存分配策略是倍增方式的,D语言数组是不是也使用了相同方式呢?我做了个简单的测试: void main(){ void* ptr = null; int[] arr = new int[0]; for (int i=0; i<33; ++i){ void* cur = cast(void*)arr; if (cur != ptr){ ...
What's New for D 0.178 Dec 23, 2006 New/Changed Features Implemented Named Return Value Optimization If the first element of an array literal is a static array, it is converted to a dynamic array. Empty ; no longer allowed after conditional statements, see Bugzilla 576. Bugs ...

GDC 0.20发布

    博客分类:
  • D
引用 * Updated to DMD 0.177 * Fixes for synchronized code generation * Better support for cross-hosted builds * Fixed Bugzilla 307, 375, 403, 575, 578 * Applied Anders Björklund's MacOS X build patches * SkyOS support will return when GCC 4.1.1 is supported. 64位支持不知道怎么样了,近期我会在gentoo上测试它。
机房对外的系统安装的是Linux,内网有一台Windows机器,想找工作把3389端口转到Linux服务器上,每次临时启用。 安装了iptables,竟然提示缺少模块,配置也比较繁琐,所以就放弃了。 想到以前用过的twisted,于是自己写了一个小工具: from twisted.internet.protocol import Protocol, ClientFactory, ServerFactory from twisted.internet import reactor import sys class ForwardServer(Protocol): de ...
aardvark 写道最近一直在补Ruby,心里惦记着Rails1.2但是一直没有时间去细看。昨天看了DHH的"Discovering a world of Resources on Rails",再来看楼主这个发帖,发现楼主对这个例子本身的理解有些不完整,对RESTful的理解也有偏差。 楼主的例子看似和DHH的例子很像,但实际很不同。DHH的例子是User/Group,典型的use case是“管理员把某个用户添加到某个组”。这样的例子,从Model到Controller到View恰好是完整的一套,很清晰也很优美。这里User是操作的对象。 而User/Article ...
讨论: 我总觉得REST应该用于提供数据而不是页面,还是用用户和圈子作例子吧,感觉顺畅一些。 比如某个用户的页面,他选一个圈子,点击“加入”就加入了这个圈子;而圈子的管理员也可以选择用户,并点击“添加”把用户加入圈子。 这里2个页面完成的是同一个操作,都是创建一个用户-圈子的关系,但操作完以后的页面转向会不同。如果用REST来提供页面,如何来处理这些转向?另加参数?那不是搞复杂了嘛。 所以我觉得应该是浏览器上通过AJAX请求这个action,返回数据,浏览器脚本把数据处理成显示,这也是AJAX最适合的方式。 如果只提供数据,实际上不需要7种action,4种就可以了: GET /p ...

突发奇想续

    博客分类:
  • c++
简单写了点代码,把那个方程组生成树结构: #include <iostream> #include <string> using namespace std; enum Type{ TNumber, TVariable, TOperator }; enum Operator{ OAdd, OSub, OMul, ODiv, OAssign, ONone }; class Variable{ Type type_; const char* name_; Operator op_; do ...
看到D语言的opAssign即赋值操作符,突然想是不是能实现下面这个功能呢?以D语法写出: auto x = new Variable; auto y = new Variable; // x = 10; y = 5; x + 5 = y * 3; x / y = 2; 简单的方程组,是否可以自动求出x和y值? 从我学习过的几种语言来考察,哪些语言可以支持这种语法呢? 1、C++ C++支持赋值操作符,不过如果我把x+5写成5+x,就必须用到全局运算符重载。要支持其它类型和Variable类型、Variable类型和其它类型、Variable和Variable的运算符 ...

DMD 0.177发布

    博客分类:
  • D
没什么亮点,BUG修复得也不多,BUG数量始终保持在250-260个,前阵子修复BUG过快,反而引入不少新BUG,这次看来是放缓脚步了。   What's New for D 0.177 Dec 9, 2006 New/Changed Features Casting a value v to a struct S is now rewritten as S(v). Initializing a struct S from a value v is now rewritten as S(v). TypeInfo now always generated for ...
jerryinside介绍了一个adobe的ajax框架,和当初见到rails一样,我几乎是看它一眼就爱上了。它是一个轻量级的ajax框架,以XML作为协议,目前功能还比较单一,不过几乎完全就是我所期待的。 Rails生成XML轻而易举,Rails 1.2的REST也是一项另人心动的功能,而Spry也是以资源作为操作对象,这2者结合会发生什么?我试着学习Spry的内涵,并结合Rails做点测试性应用,以确定是否值得迁移稍大点的项目到它上面。 首先建立一个项目: rails test -d progresql 修改配置,让它正确连接到数据库,建立相应数据库。 进入项目文件夹,安装ra ...
类似struts的token,使用session保存token,调用check_token后就把session里的token清掉,所以不能重复调用。 因为有些界面可能会有多个表单,这些表单最好共用同一个token,不然提交过来的token很难验证,所以这里做了处理,不会多次生成。 module ApplicationHelper def token_field hidden_field_tag(:__token__, (@__token__ ||= (session[:__token__] = Digest::SHA1.hexdigest((Time. ...
静态类型和动态类型各有长短,为何不让这2者兼得呢? 比如一段代码: String str = "Hello, World"; dynamic str1 = str.substring(7); dynamic str2 = str1.toLowerCase(); dynamic str3 = str2.toUpperCase(); 只需要一个关键字表明它是一个动态类型,并给它加上一个wrapper类,然后把方法调用扩展成一个send方法,我假想的编译器展开后结果是这样的: String str = "Hello, World"; Dyn ...
Global site tag (gtag.js) - Google Analytics