Ich versuche, eine Druckfunktion für einen binären Baum zu schreiben und hier ist das, was ich bisher:Wie verwende ich Parameter Überladung oder optionale Parameter in Rost?
impl TreeNode {
fn print(&self) {
self.print(0);
}
fn print(&self, level: u8) {
for _i in range(0,level) {
print!("\t");
}
match self.data {
Some(x) => println!("{}",x),
None =>()
};
match self.left {
Some(ref x) => x.print(level+1),
None =>()
};
match self.right {
Some(ref x) => x.print(level+1),
None =>()
};
}
}
ich die Störung erhalte: doppelte Definition von Wert print
. Also habe ich mich gefragt, ob es eine Möglichkeit gibt, Funktionen mit demselben Namen aber unterschiedlichen Argumenten zu erstellen. Alternativ könnten optionale Parameter dieses Problem lösen, aber ich glaube nicht, dass dies im Moment möglich ist (zumindest konnte ich es nicht über eine Google-Suche finden).
Also, was ist der beste Weg, dies zu tun? Das Umbenennen der zweiten Druckfunktion funktioniert, sieht aber hässlich aus und erfordert, dass Sie sich mehr als einen Funktionsnamen merken, wenn ich (in diesem Beispiel) ab der Mitte des Baums drucken möchte.
Das macht mich traurig. Also, zurück zu meinem Beispiel, wäre das Beste, zu tun, die zweite Funktion etwas wie "print_at_level" zu nennen und es einfach dabei belassen? – user439299
@ user439299, ja, genau. –