Ciao ragazzi io ho un problema con un blocco,cioè non riesco a far
stampare il contenuto di un hash che viene creato con un blocco.Ora vi
spiego il tutto…
io ho questo testo:
type
persona=record
età : byte;
nome: string[50];
cognome: string[50]:
professione: stringz[55];
end;
e ho creato questo programma:
arr=IO.readlines(“record.txt”) #dove record.txt è il file che
contiene il
valore=0 #testo
for i in 0 … arr.size-1
primariga=arr[valore].split(/\s/)
valore=valore+1
elements = primariga
puts elements.class
rgx = / (.):(.);/ # spazio, nome, “:” valore, “;”
hash = {}
elements.each do |line|
if m=rgx.match(line)
hash[m[1]]= m[2] #un hash {nome=>tipo}
end
end
puts hash
end
In pratica il programma prende ogni frase del testo e vi ci lavora
sopra,cioè esegue il blocco.Il mio scopo è quello che venga memorizzato
in un hash il contenuto di:età : byte;
nome: string[50];
cognome: string[50]:
professione: stringz[55];
dove nome è il primo elemento dell’array e il tipo di variabile è il
secondo elemnto.
Il mio problema è che se eseguo il tutto non mi viene visualizzato
nulla,come se il blocco non trovasse nulla da memorizzare.Dove
sbaglio???
rgx = / (.):(.);/ # spazio, nome, “:” valore, “;”
hash = {}
elements.each do |line|
if m=rgx.match(line)
hash[m[1]]= m[2] #un hash {nome=>tipo}
end
end
puts hash
end
Non uso mai le regular expression, però rgx.match(line) non mi sembra
restituisca un array… prova a mettere una puts m.inspect subito dopo
la if e vedi se m è un array o una stringa
Ale grazie il programma funzione,l’unica cosa è che io ho creato tutto
il mio programma sull’istruzione:
arr=IO.readlines(“prova.txt”)
c’è un sistema alternativo delle istruzione che mi hai consigliato in
modo da adattarsi a questo???
Mi potresti spiegare di preciso il comando gets.
Ciao
quindi sono tutti array.Ma quello che io mi domando è…di preciso a
cosa serve line???Perche l’if fa il confronto tra rgx e line,ma io a
line non gli ho assegnato niente(che confronto farebbe??).
Ale grazie il programma funzione,l’unica cosa è che io ho creato tutto
il mio programma sull’istruzione:
arr=IO.readlines(“prova.txt”)
c’è un sistema alternativo delle istruzione che mi hai consigliato in
modo da adattarsi a questo???
Mi potresti spiegare di preciso il comando gets.
Ciao
a grandi linee fanno la stessa cosa, ho usato il while perchè mi
sembrava + pulito, il tuo codice con IO.readlines è analogo: