先来一个简单的例子:
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对象。