Zmienna i funkcja mają tę samą nazwę. Jak wywołać funkcję?
fn main() {
let a = 1;
fn a() -> i32 {
2
}
println!("{}", a());
}
Kompilator Rust powiedział mi:
error[E0618]: expected function, found `{integer}`
Innymi słowy, kompilator Rust nie wywołuje a
funkcji, ale zamiast tego uzyskuje dostęp do a
zmiennej.
Odpowiedzi:
Nie można tego zrobić, ponieważ nie masz zarówno funkcji, jak i liczby całkowitej w zakresie, w którym masz
println
.Ponieważ funkcje są zwykle dostępne dla całego zakresu (tzn. Można ich używać przed deklaracją), ich deklaracja jest koncepcyjnie przenoszona na początek zakresu (są „podnoszone”).
Konsekwencją jest to, że deklaracja funkcji znajduje się przed deklaracją zmiennej liczby całkowitej i jest zacieniona.
Prawdziwa poprawka kodu zależy od dokładnej sytuacji. Może coś takiego:
źródło