假如我用dlang语言自定义了一个数据类型比如一个结构体Person p现在我想能用foreach语句能够遍历这个结构体p而且最好能像关联数组一样用byKeyValuebyKeybyValue分别遍历键值对键值请举例说明
假设我们自定义一个Person结构体如下:
struct Person
{
string name;
int age;
}
现在我们创建一个Person类型的数组,然后使用foreach语句遍历它:
Person[] people = [Person("Tom", 20), Person("Jerry", 22), Person("Alice", 25)];
foreach (person; people)
{
writeln(person.name, " is ", person.age, " years old.");
}
输出结果:
Tom is 20 years old.
Jerry is 22 years old.
Alice is 25 years old.
现在我们想要通过键值对、键、值分别遍历Person结构体数组,可以使用std.algorithm.iteration库中的相应函数:
- byKeyValue:遍历键值对
- byKey:遍历键
- byValue:遍历值
import std.algorithm.iteration;
foreach (kv; people.byKeyValue())
{
writeln("Name: ", kv.key.name, ", Age: ", kv.value.age);
}
foreach (name; people.byKey!(p => p.name))
{
writeln(name);
}
foreach (age; people.byValue!(p => p.age))
{
writeln(age);
}
输出结果:
Name: Tom, Age: 20
Name: Jerry, Age: 22
Name: Alice, Age: 25
Tom
Jerry
Alice
20
22
25
``
原文地址: https://www.cveoy.top/t/topic/fF39 著作权归作者所有。请勿转载和采集!