| Thread overview |
|---|
July 24, 2017 map on char[] converts to dchar? | ||||
|---|---|---|---|---|
| ||||
Hi all,
What am I doing wrong here?
```
import std.algorithm;
int foo(char c) {
return 123;
}
auto mapFoo(char[] chars) {
return chars.map!(a => a.foo);
}
```
errors with:
main.d(14): Error: function main.foo (char c) is not callable using argument types (dchar)
/Library/D/dmd/src/phobos/std/algorithm/iteration.d(492): instantiated from here: MapResult!(__lambda2, char[])
main.d(14): instantiated from here: map!(char[])
(Things work after changing foo to accept dchar, but I don't want that.)
Thanks,
Johan
| ||||
July 24, 2017 Re: map on char[] converts to dchar? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Johan | On Monday, 24 July 2017 at 09:05:43 UTC, Johan wrote: > Hi all, > What am I doing wrong here? > ``` > import std.algorithm; > int foo(char c) { > return 123; > } > auto mapFoo(char[] chars) { > return chars.map!(a => a.foo); > } > ``` > errors with: > main.d(14): Error: function main.foo (char c) is not callable using argument types (dchar) > /Library/D/dmd/src/phobos/std/algorithm/iteration.d(492): > instantiated from here: MapResult!(__lambda2, char[]) > main.d(14): instantiated from here: map!(char[]) > > (Things work after changing foo to accept dchar, but I don't want that.) > > Thanks, > Johan Have a look at https://tour.dlang.org/tour/en/gems/unicode tl;dr: it's auto-decoding and you can avoid it with e.g. byChar | |||
July 24, 2017 Re: map on char[] converts to dchar? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Seb | It is worth noting too that mach's map function will not behave this way; UTF encoding and decoding is instructed explicitly and is not done implicitly like in phobos. https://github.com/pineapplemachine/mach.d import mach.range : map, asarray; import mach.text.ascii : toupper; void main(){ char[] x = ['h', 'e', 'l', 'l', 'o']; char[] y = x.map!toupper.asarray(); assert(y == "HELLO"); } | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply