Array is already defined

Vino vino.bheeman at hotmail.com
Fri Jan 5 16:39:21 UTC 2018


On Friday, 5 January 2018 at 16:07:49 UTC, Steven Schveighoffer 
wrote:
> On 1/5/18 10:56 AM, Vino wrote:
>> On Friday, 5 January 2018 at 15:28:58 UTC, Jonathan M Davis 
>> wrote:
>>> On Friday, January 05, 2018 15:22:49 Vino via 
>>> Digitalmars-d-learn wrote:
>>>> Hi All,
>>>>
>>>>   Request your help on how to unset or delete an array, in 
>>>> the
>>>> below example, we get an error "Common  is already defined".
>>>>
>>>> Auto fn1 () {
>>>> Array!string Text;
>>>> Array!string Number;
>>>> return tuple(Text, Number);
>>>> }
>>>>
>>>> Void main () {
>>>> static foreach(i; 0 .. 2) {
>>>> typeof(fn1()[i]) Common;
>>>> writeln(Common[]);
>>>> Common.delete or Common.Unset // Something similar like this
>>>> }
>>>>
>>>> From,
>>>> Vino.B
>>>
>>> static foreach does not create a new scope (if it did, it 
>>> wouldn't work very well at module or class/struct scope). If 
>>> you declare any variables inside a static foreach, give it an 
>>> extra set of braces.
>>>
>>> - Jonathan m Davis
>> 
>> Hi Jonathan,
>> 
>>   Sorry , not able to get you, can you please point our as to 
>> where we need to added the braces in the below example.
>> 
>> void main () {
>> Array!int Keycol;
>> static foreach(i; 0 .. 3) {
> {
>> typeof(read()[i]) Datacol;
>> Datacol.insertBack(sort(read[i].dup[]).uniq);
>> foreach(k; read[i]) { 
>> Keycol.insertBack(Datacol[].countUntil(k));}
> }
>> }
>> writeln (Datacol[], Keycol[]);
>> }
>>
>
> -Steve

Hi Steve,

  if we add the braces we are getting the Error: undefined 
identifier Datacol

void main () {
Array!int Keycol;
static foreach(i; 0 .. 3) {
	{
		typeof(read()[i]) Datacol;
		Datacol.insertBack(sort(read[i].dup[]).uniq);
		foreach(k; read[i]) { 
Keycol.insertBack(Datacol[].countUntil(k));}
	}
}
	writeln (Datacol[], Keycol[]);
}

From,
Vino.B


More information about the Digitalmars-d-learn mailing list