On Tuesday, 26 April 2022 at 00:57:54 UTC, Ali Çehreli wrote:
>On 4/25/22 16:59, Salih Dincer wrote:
>Because it cannot be used with other possibilities such as
chunks()
and take()
.
There must be something wrong. map is commonly used with chunks(), take(), etc.
>Also it cannot be customized with
toString()
.
Can you show examples of these please?
Of course, I have a few friends here:
and a lot of errors 😀
struct Bar {
string s;
this(R)(R result) {
import std.conv : to;
this.s = result.to!string;
}
string toString() {
return s;
}
}
auto parts = "abcdefghi".chunks(3);
auto compiled = parts.map!(a => Bar(a));
auto notCompile1 = parts.map!Bar;
/* Error 1: instantiated from here: `map!(Chunks!string)`*/
auto notCompile2 = parts.map!(c => c.to!string)
.map!Bar;
/* Error 1: /usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(604)
: cannot access frame pointer of `source.main.Bar`
Error 2: /usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(499)
: template instance `std.algorithm.iteration.MapResult!(Bar, MapResult!(__lambda4, Chunks!string))` error instantiating
Error 3: instantiated from here: `map!(MapResult!(__lambda4, Chunks!string))`
*/
auto notCompile3 = parts.array.map!Bar;
/* Error 1: /usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(604)
: cannot access frame pointer of `source.main.Bar`
Error 2: /usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(616)
: cannot access frame pointer of `source.main.Bar`
Error 3: /usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(499)
: template instance `std.algorithm.iteration.MapResult!(Bar, Take!string[])` error instantiating
Error 4: instantiated from here: `map!(Take!string
*/
auto arr = compiled.array; /* [abc, def, ghi]
auto arr2 = str.chunks(3)
.map!(a => Bar(a))
.array;//*/
arr.writeln(": ", typeof(arr).stringof);
SDB@79