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);
}
R
~add(2, 2)
を割り当てることはできません。 z2を返すadd - > mul - > subからR
を割り当てる必要があります。関数が別の関数に依存する場合、最終製品にどのように変数を割り当てることができますか?
したがって、プロセスはadd(2, 2)
- >mul(4, 2)
- >sub(8, 2)
となり、R = 6となります。これを行うにはどうすればいいですか?
これは私が取得エラーです:
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`
書式設定をお詫び申し上げます –
私はエラーメッセージを追加するのを忘れていました。私は今それを追加しました。 –
'sub'はどんなタイプを返しますか? 'add'はどうでしょうか?これに対する答えはどうやって分かりますか?コンパイラはどうですか? – Shepmaster