digitalmars.D.learn - no [] operator overload for type Chunks!(char[])
- Malte (7/7) May 30 2018 Why does this code complain at the last line about a missing []
- =?UTF-8?Q?Ali_=c3=87ehreli?= (8/17) May 30 2018 UTF-8 auto decoding strikes again. :)
- Malte (4/21) May 30 2018 I see. Not what I would have expected, but makes sense for people
- Steven Schveighoffer (4/29) May 31 2018 You can use byCodeUnit to turn it back into an indexable range:
Why does this code complain at the last line about a missing [] operator overload? auto buffer = new char[6]; auto chunked = buffer.chunks(3); chunked[1][2] = '!'; Same happens with wchar. Dchar and byte work as expected.
May 30 2018
On 05/30/2018 02:19 PM, Malte wrote:Why does this code complain at the last line about a missing [] operator overload? auto buffer = new char[6]; auto chunked = buffer.chunks(3); chunked[1][2] = '!'; Same happens with wchar. Dchar and byte work as expected.UTF-8 auto decoding strikes again. :) Even though the original container is char[], passing it through Phobos algorithms generated range of dchar. The thing is, those dchar elements are generated (decoded from chars) "on the fly" as one iterates over the range. Which means, there is no array of dchar to speak of, so there is no random access. Ali
May 30 2018
On Wednesday, 30 May 2018 at 21:27:44 UTC, Ali Çehreli wrote:On 05/30/2018 02:19 PM, Malte wrote:I see. Not what I would have expected, but makes sense for people working with UTF-8 strings. Thanks for the fast answer.Why does this code complain at the last line about a missing [] operator overload? auto buffer = new char[6]; auto chunked = buffer.chunks(3); chunked[1][2] = '!'; Same happens with wchar. Dchar and byte work as expected.UTF-8 auto decoding strikes again. :) Even though the original container is char[], passing it through Phobos algorithms generated range of dchar. The thing is, those dchar elements are generated (decoded from chars) "on the fly" as one iterates over the range. Which means, there is no array of dchar to speak of, so there is no random access. Ali
May 30 2018
On 5/30/18 5:41 PM, Malte wrote:On Wednesday, 30 May 2018 at 21:27:44 UTC, Ali Çehreli wrote:You can use byCodeUnit to turn it back into an indexable range: auto chunked = buffer.byCodeUnit.chunks(3); -SteveOn 05/30/2018 02:19 PM, Malte wrote:I see. Not what I would have expected, but makes sense for people working with UTF-8 strings. Thanks for the fast answer.Why does this code complain at the last line about a missing [] operator overload? auto buffer = new char[6]; auto chunked = buffer.chunks(3); chunked[1][2] = '!'; Same happens with wchar. Dchar and byte work as expected.UTF-8 auto decoding strikes again. :) Even though the original container is char[], passing it through Phobos algorithms generated range of dchar. The thing is, those dchar elements are generated (decoded from chars) "on the fly" as one iterates over the range. Which means, there is no array of dchar to speak of, so there is no random access.
May 31 2018