在Dart中调用泛型函数(2.0.0-dev.62.0)

时间:2018-06-16 07:54:06

标签: dart

为什么以下代码甚至编译(Dart VM版本: 2.0.0-dev.62.0 ):

int f<T>(T q) {
       return q.hashCode;
}       

void main() {
        print(f<int>(23));
        print(f<int>("wow"));
}    

我认为f<A>(..)会选择A版本的f

1 个答案:

答案 0 :(得分:3)

Dart VM默认情况下默认情况下不使用Dart 2语义(它通过Flutter和is coming soon for Dart v2 dev执行),因此您需要使用--preview-dart-2运行。如果您这样做,您将收到错误:

Dannys-MacBook:lib danny$ dart --preview-dart-2 test.dart
test.dart:7:22: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
        print(f<int>("wow"));