作者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