作者reader (读者)
看板CSSE
标题[讨论] 一个有趣的设计
时间Thu Feb 24 04:03:04 2005
这个 C++ extension 的设计非常简单,却又异常好用,像这样:
const char* c = "test";
string t =
http://www.google.com/search?q=${c};
=> http._op_colon("//www.google.com/search?q=", c);
也就是增加一个 : operator 的 member function, 後面的东西
一直到 : ; > < | 这些符号为止,就会被视作字串。
另外还可以使用 ${ expression } 直接使用变数。
於是有了一个 http 物件之後,就可以像上面那样写了。
另外也可以再最外面加上大括号,这样几乎所有符号都就可以包进去。
const char* c = "test";
string t = php: { echo "${c}"; };
这样一来,程式的语法马上就能丰富许多,特别是对於网路程式
设计来说,将会是极为好用而直观的。
例:
mail:
[email protected] << content; // 寄信
html c =
http://www.yahoo.com;
c:head:title; // 取得 HTML 文件的标题
mysql: SELECT * FROM user WHERE id = ${ n }; // 执行 SQL 叙述
echo: { <html><body>${d}</body></html> }; // 输出字串
file:test.txt | preg: s/test/hello/g; // 执行 regular expression
如果用传统的方法,我想多加不少括号和引号是免不了的。
而且有许多类别库往往都设计得很复杂,操作起来毫无直观性
可言,这样的特殊设计,应该可以让许多类别的设计单纯化,
何况像上述的这些例子,都有现成的程式可以利用。
这个 C++ 扩充,做起来应该会比上个主题谈到的 ref 简单。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.173.26