[Roma.pm] domanda

kanak at perl.it kanak at perl.it
Fri Sep 11 07:30:18 PDT 2009


grazie mille cerco di tradurmelo un attimo

vorrei cercare di farlo col map piuttosto che usare un modulo
senno' mi faccio la sub (ma e' antiestetico)



> In generale la mappatura indice -> valore non è invertibile, ad esempio con
> array così:
> @array = (1, 1, 1, 1, 1);

> dove si trova "1"?

> Se vuoi l'indice del primo elemento uguale a quello che cerchi, puoi usare
> first_index (alias firstids) da
> List::MoreUtils<http://search.cpan.org/perldoc?List::MoreUtils>
> :

> $indice = first_idx { $_ == $elemento } LISTA;

> Al posto di "==" puoi ovviamente mettere "eq" ed in generale puoi mettere un
> qualsiasi blocco di test (ad esempio per cercare il primo elemento pari,
> positivo, ecc.)

> Se sei sicuro che la mappatura sia invertibile - ossia la lista/array
> contiene solamente valori unici - e devi trovare parecchie inversioni
> potresti utilizzare una hash, ad esempio:

>   my @array = (...);

>   my %indice_di;
>   @indice_di{@array} = 0 .. $#array;

>   # oppure, più concisamente
>   my %indice_di = map { $array[$_] => $_ } 0 .. $#array;

>   $indice = $indice_di{$elemento};

> Da notare che se hai elementi ripetuti questa tecnica ti darà l'ultimo
> indice disponibile, non il primo come first_index().

> Ciao,

>    Flavio.


> 2009/9/11 <kanak at perl.it>

>> qual'e' la variabile che indica la posizione di un elemento dentro un
>> array?
>>
>> in pratica l'opposto di:
>> " $lista[x] " che corrisponde ad " elemento "
>>
>> io vorrei una funzione tipo:
>>  "posizione(elemento, @lista) che corrisponde ad " x "
>>
>>  grazie
>>
>> _______________________________________________
>> Roma mailing list
>> Roma at pm.org
>> http://mail.pm.org/mailman/listinfo/roma
>>



-- 
Best regards,
 kanak                            mailto:kanak at perl.it



More information about the Roma mailing list