为什么要使用get on泛型函数

  • 本文关键字:get on 泛型 函数 dart
  • 更新时间 :
  • 英文 :


为什么可以在泛型函数上使用getter,以及如何使用它?

T MyGenericFunc<T>(T x) {return x;} get what {
print("what");
}
main(){
var s = MyGenericFunc<String>("hey");
print(s);
// how to use the getter?
}

为什么可以在泛型函数上使用getter

"Getter on a generic function";听起来像胡说八道。您的示例是一个getter,返回一个泛型函数。

在大多数情况下,您可能不想要一个返回函数的getter;你只需要直接定义一个函数。例如,这样做毫无意义:

num Function(num x) get square {
return (x) => x * x;
}

当你可以写:

num square(num x) {
return x * x;
}

与呼叫者没有区别:在任何一种情况下,他们都只会呼叫,例如square(3)

但是,如果getter在调用返回函数之前确实工作了,则可能会有所不同。例如:

num Function(num x) get square {
print('square');
return (x) => x * x;
}
void main() {
var f = square; // Prints: square
print('Hello world!');
var result = f(3); // Does not print.
print(result); // Prints: 9
}

将打印:

square
Hello world!
9

相比之下:

num square(num x) {
print('square');
return x * x;
}

void main() {
var f = square; // Does not print.
print('Hello world!');
var result = f(3); // Prints: square
print(result); // Prints: 9
}

将打印:

Hello world!
square
9

在你的相关问题的例子中,getter设置了一个内部标志(我不知道是为了什么目的(。

如何使用它?

你可以像函数一样调用它。在您的示例中,由于what是一个返回泛型函数的getter,因此您可以将其称为what<DesiredType>(argument)

最新更新