Próbuję napisać funkcję drukowania dla binarnego drzewa i tutaj jest to, co mam tak daleko:Jak używać przeciążania parametrów lub opcjonalnych parametrów w rdzeniu?
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 =>()
};
}
}
otrzymuję błąd: powielać definicję wartości print
. Tak więc zastanawiałem się, czy istnieje sposób na tworzenie funkcji o tej samej nazwie, ale różnych argumentów. Ewentualnie opcjonalne parametry rozwiązałyby ten problem, ale nie sądzę, że jest to możliwe w tej chwili (przynajmniej nie mogłem go znaleźć za pomocą wyszukiwarki Google).
Jaki jest najlepszy sposób na zrobienie tego? Zmiana nazwy drugiej funkcji drukowania działa, ale wygląda brzydko i wymaga zapamiętania więcej niż jednej nazwy funkcji, jeśli chcę (na potrzeby tego przykładu) drukować zaczynając od środka drzewa.
To sprawia, że jestem smutny. A zatem, wracając do mojego przykładu, najlepiej byłoby wymienić drugą funkcję na "print_at_level" i po prostu to zostawić? – user439299
@ user439299, tak, dokładnie. –