www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - remove not callable for char[]

reply Flaze07 <christianseiji.cs gmail.com> writes:
well, not really, it just cannot auto deduce, the problem is, I 
don't know what to put in, I know that I can put in 
SwapStrategy.stable for the first one, but what about the Range, 
I don't know what to put in
E.g
int[] i = [ 1, 2 ];
i = i.remove( 1 );//able to automagically deduce

char[] c = [ 'a', 'b' ];
c = c.remove( 1 ); //unable to deduce what char[] is in range
Jun 11 2018
parent reply Steven Schveighoffer <schveiguy yahoo.com> writes:
On 6/12/18 2:33 AM, Flaze07 wrote:
 well, not really, it just cannot auto deduce, the problem is, I don't 
 know what to put in, I know that I can put in SwapStrategy.stable for 
 the first one, but what about the Range, I don't know what to put in
 E.g
 int[] i = [ 1, 2 ];
 i = i.remove( 1 );//able to automagically deduce
 
 char[] c = [ 'a', 'b' ];
 c = c.remove( 1 ); //unable to deduce what char[] is in range
The issue is that char[] is treated as an auto-decoding bi-directional range by Phobos, not an array. To get Phobos to behave, you can use byCodeUnit: import std.utf: byCodeUnit; c = c.byCodeUnit.remove(1).source; -Steve
Jun 12 2018
parent reply Flaze07 <christianseiji.cs gmail.com> writes:
On Tuesday, 12 June 2018 at 14:08:25 UTC, Steven Schveighoffer 
wrote:
 On 6/12/18 2:33 AM, Flaze07 wrote:
 well, not really, it just cannot auto deduce, the problem is, 
 I don't know what to put in, I know that I can put in 
 SwapStrategy.stable for the first one, but what about the 
 Range, I don't know what to put in
 E.g
 int[] i = [ 1, 2 ];
 i = i.remove( 1 );//able to automagically deduce
 
 char[] c = [ 'a', 'b' ];
 c = c.remove( 1 ); //unable to deduce what char[] is in range
The issue is that char[] is treated as an auto-decoding bi-directional range by Phobos, not an array. To get Phobos to behave, you can use byCodeUnit: import std.utf: byCodeUnit; c = c.byCodeUnit.remove(1).source; -Steve
I see, so it means that only char is affected, gotcha
Jun 12 2018
parent Steven Schveighoffer <schveiguy yahoo.com> writes:
On 6/13/18 1:18 AM, Flaze07 wrote:
 I see, so it means that only char is affected, gotcha
 
Well, char[] and wchar[]. dchar[] is treated as an array by Phobos. But calling byCodeUnit on a dchar array should work just like an array as well, so using it is the most generic solution. -Steve
Jun 13 2018