[swift-dev] [stdlib] Array.description calls debugDescription on its contents

Dmitri Gribenko gribozavr at gmail.com
Fri Dec 11 19:35:22 CST 2015


On Fri, Dec 11, 2015 at 3:02 PM, Brent Royal-Gordon
<brent at architechies.com> wrote:
>>> while I was working on this PR I encountered unexpected behavior from Array.description. It iterates over its items and calls debugDescription on them. I found it a bit unexpected thus my question here. Is it desired behavior? I would expect description and debugDescription call respective methods on the contents.
>>
>> Array's description shouldn't be presented to the user in raw form, ever, so the use case here is debugging.  Thus, it makes sense to present the debug representation of the elements in both cases.
>
> I keep noticing threads where people are confused about this kind of thing—I’ve seen it with Array, Optional, and several others. I wonder if these kinds of types simply *shouldn’t* offer .description properties, as a way of saying “no user-visible conversion inside”.

Nobody should be using '.description' or '.debugDescription' directly
in any case.  One should be using String(x) or String(reflecting: x),
because that works with any instances, including those cases when the
runtime will synthesize the string representation for you.

Dmitri

-- 
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/


More information about the swift-dev mailing list