先來一個簡單的例子:
module testContainer;import std.stdio;import std.container;void main(){ SList!int myList; foreach(i;0..10){myList.insert(i); } foreach(element;myList){writeln(element); }}
編譯後運行結果為輸出10行數字。
foreach的文法和Java有點像,C++裡面的iterator已經沒有了,也不需要for_each加function object的組合。代碼更簡潔,初學者好理解。
SList!int 等價於C++中的list<int>,有點奇怪,不過也能適應。
再來自己設計一個類,放在SList中。
user.d
module freebird;import std.string;class User{private: string name; public: void setName(string argName){name = argName; } string getName(){return name; }}
main.d
module testContainer;import std.stdio;import std.container;import std.format;import freebird;import std.conv;void main(){ SList!User users; foreach(i;0..10){string part1 ="name";string part2 = to!string(i);string name = part1 ~ part2;User user = new User();user.setName(name);users.insert(user); } foreach(curUser;users){writeln(curUser.getName()); }}
編譯dmd main.d user.d
運行結果是輸出10個名稱,形如:
name1
name2
代碼說明:
string對象拼接沒有+和+=,而是用~
std.conv中提供了to模板函數,將int轉換成string對象。