💭
関数を参照するということ
関数を参照するのか、呼び出すのか
下記のコードでは、エラーになってしまう。
理由は、関数を呼び出してしまうことで、処理結果が渡されてしまうからである。
Calculaterクラスでコンストラクタの値をFunction型で指定しているのに、異なる型の値が
入ってしまうためエラーが起こる。
void main() {
int n1 = 3;
int n2 = 4;
// エラー → ()をつけていることで関数の処理が実行されて、異なる型の値が入るため。
Calculater mycalculater = Calculater(function: add(n1, n2));
}
class Calculater {
Calculater({this.function});
Function? function;
}
void add(int n1, int n2) {
print(n1 + n2);
}
下記は修正したものである。
関数そのものを参照したaddを渡すことでエラーを解消している。
void main() {
int n1 = 3;
int n2 = 4;
// 関数自体を参照させたいため()をとる。
Calculater mycalculater = Calculater(function: add);
mycalculater.function!(n1,n2);
}
class Calculater {
Calculater({this.function});
Function? function;
}
void add(int n1, int n2) {
print(n1 + n2);
}
なぜ、エラーのコードを書いてしまったのか。
引数を指定している関数なら、引数を書かないといけないと思い込んでいた。
関数そのものを呼び出すだけなら、引数はいらないことに気づけた。
Discussion