为什么以下代码甚至编译(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
?
答案 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"));