On Sunday, 2 October 2022 at 19:48:52 UTC, mw wrote:
```
text.csvReader!Layout(["b","c","a"]); // Read only these column
```

The intention is very clear: only read the selected columns from the csv, and for any other fields of class Layout, just ignore (with the default D .init value).

Why don't you do this?  For example you can try the following?

    ```d
    import std.csv, std.math.algebraic : abs;

         string str = "a,b,c\nHello,65,63.63\n➊➋➂❹,123,3673.562";
         struct Layout
         {
             int value;
             double other;
             string name;
         }

         auto records = csvReader!Layout(str, ["b","c","a"]);

         Layout[2] ans;
         ans[0].name = "Hello";
         ans[0].value = 65;
         ans[0].other = 63.63;
         ans[1].name = "➊➋➂❹";
         ans[1].value = 123;
         ans[1].other = 3673.562;

         int count;
         foreach (record; records)
         {
             assert(ans[count].name == record.name);
             assert(ans[count].value == record.value);
        assert(abs(ans[count].other - record.other) < 0.00001);
             count++;
         }
         assert(count == ans.length);
    ```

SDB@79

Reply via email to