Reiterazioni varie all'interno dello stesso hash

Se ho una roba del genere:

@a=riga1.scan(/<(.?@.?)>|(?)/).flatten.compact
@dir.each_key do |mail|
if @a.include?(mail)
if @a[0] == mail
@dir_spediti["#{mail}"] = @dir_spediti["#{mail}"]+=1
@ist.each {|mail_ist| @dir_spediti_ist["#{mail}"] =
@dir_spediti_ist["#{mail}"]+=1 if @a[[email protected]].include?(mail_ist)}
@dir.each_key {|mail_ist| @dir_spediti_ist["#{mail}"] =
@dir_spediti_ist["#{mail}"]+=1 if @a[[email protected]].include?(mail_ist)}
end
end
end

quella iterazione di @dir.each_key all’interno di una iterazione della
stessa @dir.each_key mi fa perdere il puntatore della prima iterazione?
Cioe’ se la prima iterazione parte da 1 e all’interno itero sullo stesso
hash da 1 a 5, quando ritorno su continuo da due o riprende dall’inizio?
Non so se mi sono spiegato.
Grazie.

Mauro S. [email protected] writes:

Ovviamente no. Esempio:

irb(main):003:0> hash = {‘1’ => ‘1’, ‘2’ => ‘2’}
=> {“1”=>“1”, “2”=>“2”}
irb(main):004:0> hash.each_key { |k1| puts 'outer loop k: ’ + k1;
hash.each_key {|k2| puts 'inner loop k: ’ + k2}}
outer loop k: 1
inner loop k: 1
inner loop k: 2
outer loop k: 2
inner loop k: 1
inner loop k: 2
=> {“1”=>“1”, “2”=>“2”}

Il giorno ven, 20/04/2007 alle 12.33 +0200, Luigi P. ha scritto:

outer loop k: 2
inner loop k: 1
inner loop k: 2
=> {“1”=>“1”, “2”=>“2”}

io intendevo questo:

irb(main):001:0> hash = {“a”=>“1”,“b”=>“2”,“c”=>“3”,“d”=>“4”,“e”=>“5”}
irb(main):008:0> hash.each_key do |x|
irb(main):009:1* puts “esterno #{x}”
irb(main):010:1> hash.each_key do |y|
irb(main):011:2* puts “interno #{y}”
irb(main):012:2> end
irb(main):013:1> end

esterno a
interno a
interno b
interno c
interno d
interno e
esterno b
interno a
interno b
interno c
interno d
interno e
esterno c
interno a
interno b
interno c
interno d
interno e
esterno d
interno a
interno b
interno c
interno d
interno e
esterno e
interno a
interno b
interno c
interno d
interno e

Mauro S. [email protected] writes:

=> {“1”=>“1”, “2”=>“2”}

Ehm… hai mostrato il mio stesso esempio, solo su piu’ righe invece che
su una sola…

Il giorno ven, 20/04/2007 alle 13.22 +0200, Luigi P. ha scritto:

inner loop k: 1
irb(main):012:2> end
irb(main):013:1> end

Ehm… hai mostrato il mio stesso esempio, solo su piu’ righe invece che su una sola…

Acc scusa, evidentemente sono un po stanco :slight_smile: