fn add(x: i32, y: i32) -> fn() {
let z = x + y;
mul(z, 2);
}
fn mul(x1: i32, y1: i32) -> fn() {
let z1 = x1 * y1;
sub(z1, 2);
}
fn sub(x2: i32, y2: i32) -> (i32) {
let z2 = x2 - y2;
z2
}
fn main() {
let R = add(2, 2);
println!("{}", R);
}
Zuordnung R
zu add(2, 2)
funktioniert nicht. Ich muss in der Lage sein, R
von add -> mul -> sub zuzuweisen, die z2 zurückgibt.Wenn eine Funktion von einer anderen Funktion abhängt, wie kann ich dem Endprodukt eine Variable zuweisen?
Also ist der Prozess add(2, 2)
->mul(4, 2)
->sub(8, 2)
also R = 6. Wie gehe ich dabei vor?
Dies ist der Fehler, den ich bekommen:
error[E0277]: the trait bound `fn(i32): std::fmt::Display` is not satisfied
--> testzz.rs:20:16
|
20 | println!("{}", R);
| ^the trait `std::fmt::Display` is not implemented for
`fn(i32)`
|
= note: `fn(i32)` cannot be formatted with the default formatter; try using
`:?` instead if you are using a format string
= note: required by `std::fmt::Display::fmt`
Ich entschuldige mich für die Formatierung –
Oh, ich habe vergessen, die Fehlermeldung hinzuzufügen. Ich habe es gerade hinzugefügt. –
Welchen Typ gibt 'sub' zurück? Was ist mit 'hinzufügen'? Woher weißt du die Antwort? Wie funktioniert der Compiler? – Shepmaster