[ruby-it] Sembra non funzioni la ricorsione
Luca Mearelli
luca.mearelli a gmail.com
Lun 5 Feb 2007 10:17:24 CET
Roberto Casadei wrote:
> Ho fatto una cosa del genere:
>
> def getTree
> for child in self.getChilds.to_a
> child.getTree
> end
> "<option value=\"#{self.id}\">#{'-'*self.getNumAncestors}
> #{self.title}</option>"
> end
>
> Per scorrere lungo una generarchia, purtroppo si ferma oltre il primo
> livello.
Ok, magari non hai riportato il codice completamente, ma... quello che
fai nel ciclo for e' chiamare la getTree per ciascun figlio, ma non ti
memorizzi il valore di ritorno. Cosi alla fine dalla funzione
restituisci solo la stringa per il nodo su cui la chiami (e.g. solo la
radice dell'albero).
un paio di esempi su come farlo:
def getTree_2
childs_string = ""
for child in self.getChilds.to_a
childs_string += child.getTree_2
end
"<option value=\"#{self.id}\">#{'-'*self.getNumAncestors}
> #{self.title}</option> \n#{childs_string}"
end
def getTree_3
child_trees = self.getChilds.to_a.map{|c| c.getTree_3 }
"<option value=\"#{self.id}\">#{'-'*self.getNumAncestors}
> #{self.title}</option> \n#{child_trees.join}"
end
oppure (da usare con un blocco sulla pagina):
def getTree_4
yield "<option value=\"#{self.id}\">#{'-'*self.getNumAncestors}
#{self.title}</option>"
for child in self.getChilds.to_a
child.getTree_4{|t| yield t }
end
end
ciao
Luca
--
Web: http://spazidigitali.com - http://thetyper.com
Email mailto://luca.mearelli@gmail.com
Skype callto://l.mearelli
--
Maggiori informazioni sulla lista
Ml