Jonathan M Davis schrieb:
On Wednesday, November 10, 2010 14:52:10 Jesse Phillips wrote:
Walter Bright Wrote:
dsimcha wrote:
Libraries need to make the
simple use cases sufficiently simple that people aren't tempted to roll
their own.
Hear hear. For example, one of the goals with D strings was to make them
so good that people wouldn't invent their own string classes.
And yet we still get those that want a class, or even limit the capability
of arrays so that a class is more appealing. (Had a friend that hated the
idea that D went back to array of characters, then he saw that arrays
could actually do stuff)

Well, of course his first reaction was negative. Arrays suck in other languages in comparison to D. Having strings be arrays in C is horrible. I'd be annoyed to have strings be arrays if you were using Java arrays, and they're a definite improvement over C - if nothing else because they know their length. Strings as arrays work in D precisely because D arrays are so awesome. I've never used another language which had arrays which were even close to as awesome as the ones in D.

- Jonathan M Davis

The only possible source of confusion may be that slicing is only safe with dchar[]. (But still may work with char[] as long as you're only using ASCII characters, so the error may not be obvious)

Of course I don't want to propose to change that because it makes perfect sense the way it is, because in many situations you want to know, how long the string physically is (how many bytes), so any hack to splice by logical characters instead of physical characters would result in a terrible mess.

But this is something a string-class with .substring(beg, end), .logLength, .physLength and stuff like that could fix, because these differences were more obvious.

But then again, having the following functions in std.string may suffice:

size_t logLength(string s) // logical length in code points
string substring(string s, size_t beg, size_t end) // "logical slice" - from code point number beg to code point number end

On the other hand those wouldn't play nice with the existing functions like indexOf etc :/

Reply via email to