"James Miller" <ja...@aatch.net> wrote in message news:qdgacdzxkhmhojqce...@forum.dlang.org... > I'm writing an introduction/tutorial to using strings in D, paying > particular attention to the complexities of UTF-8 and 16. I realised that > when you want the number of characters, you normally actually want to use > walkLength, not length. Is is reasonable for the compiler to pick this up > during semantic analysis and point out this situation? > > It's just a thought because a lot of the time, using length will get the > right answer, but for the wrong reasons, resulting in lurking bugs. You > can always cast to immutable(ubyte)[] or immutable(short)[] if you want to > work with the actual bytes anyway.
I find that most of the time I actually *do* want to use length. Don't know if that's common, though, or if it's just a reflection of my particular use-cases. Also, keep in mind that (unless I'm mistaken) walkLength does *not* return the number of "characters" (ie, graphemes), but merely the number of code points - which is not the same thing (due to existence of the [confusingly-named] "combining characters").