làm thế nào tôi có thể làm cho một lớp có thể sử dụng trong một tuyên bố foreach?Làm thế nào để tạo ra một đối tượng (lớp) có thể xử lý được trong D?
Lớp học chứa một mảng kết hợp (ví dụ: chuỗi [chuỗi]). Vì vậy, tuyên bố foreach sử dụng mảng này làm nguồn.
Vì vậy, đây là những gì tôi muốn:
auto obj = new Obj();
foreach (key, value; obj)
{
...
}
Tôi có cần phải thực hiện một someting giao diện như vậy?
EDIT:
Giải pháp:
public int opApply(int delegate(ref string, ref Type) dg)
{
int result = 0;
foreach (ref key, ref value; data)
{
result = dg(key, value);
if (result != 0)
{
break;
}
}
return result;
}
Cùng được thực hiện cho public int opApply (int đại biểu (ref Type) dg).
Tôi không nghĩ rằng dãy dựa trên hỗ trợ foreach giải nén được nêu ra. Và 'opApply' cũng có thể được sử dụng trong D2. – kennytm
opApply là giải pháp, thnx! – VDVLeon