string concatenation
Justin Johansson
no at spam.com
Wed Nov 18 21:49:29 PST 2009
Ellery Newcomer wrote:
> Andrei Alexandrescu wrote:
>> Ellery Newcomer wrote:
>>> Andrei Alexandrescu wrote:
>>>> TDPL boasts the code:
>>>>
>>>> void main()
>>>> {
>>>> string a = "Hall\u00E5";
>>>> wstring b = ", ";
>>>> dstring c = "V\u00E4rld";
>>>> auto d = b ~ c; // d has type wstring, same as b
>>>> a ~= d ~ '!'; // concatenate string with character
>>>> writeln(a);
>>>> }
>>>>
>>>> We are having second thoughts about allowing b ~ c. It may be just a bit
>>>> too clever. Also, figuring out the result type is not a slam dunk. The
>>>> pro arguments are that strings are already supported by the compiler in
>>>> iteration, literals, and concatenation of a char[] with a dchar.
>>>>
>>>> What say you?
>>>>
>>>>
>>>> Andrei
>>> What are the current ideas on result type and why don't they dunk?
>> The result type would be the type of the left-hand side. This makes ~
>> consistent of sorts with ~=.
>>
>
> That seems intuitive enough. Its what I would have guessed.
>
>>> (personally, I like the idea of a syntax for converting from one unicode
>>> representation to another)
>> I don't think that's an option at the moment.
>>
>>
>> Andrei
>
> I don't know what I ended up saying, but I meant
>
> a = ""c ~ somewstring;
>
> beats
>
> a = std.utf.toString(somewstring);
> //no I'm not going to check if that's the right function
>
> am I still missing something?
a = string( somewstring )
is much cleaner.
This an example of a constructor function.
Sadly, D does not support constructor functions (that I know of).
Justin Johansson
More information about the Digitalmars-d
mailing list