我想指定用作类字段的函数的签名。 这是一个例子:
class Space<PointType>
{
// num distance(PointType, PointType); This does not work
final distance; // This works but dystance types are not defined
Space(num this.distance(PointType, PointType));
}
我知道我可以使用typedef来定义回调接口。然而,这似乎不适用于泛型。 有什么建议吗?
答案 0 :(得分:4)
您可以在typedef
中使用泛型。在你的情况下:
typedef num ComputeDistance<E>(E p1, E p2);
class Space<PointType> {
final ComputeDistance<PointType> distance;
Space(this.distance);
}
答案 1 :(得分:2)
您可以使用typedef
来声明类字段中使用的函数的签名。我并不完全确定我会按照您的具体示例进行操作,因此我将保持讨论的通用性。
以下是使用typedef
:
typedef functionReturnType nameOfTypedef(ParamType paramName);
这是一个具体的例子:
typedef String MyFuncType(int x, int y);
此示例定义MyFuncType
以返回String
并获取两个int
个参数。
class MyClass {
MyFuncType func; // Matches a func that returns a String and take 2 int arguments.
...
}
您可以阅读有关在https://github.com/dart-lang/cookbook/blob/basics/basics.asciidoc#using-typedef-to-declare-a-function-signature使用typedef
的更全面的讨论。