命名方法`get`会导致错误

jav*_*iry 2 dart angular-dart

看到这个简单的类和方法:

import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart';
import 'package:angular/angular.dart';

@Injectable()
class ApiClient {

  final Client _http;
  static final _headers = { 'Content-Type': 'application/json' };
  static final _encodedHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };

  ApiClient(this._http);

  Future<T> get<T>(String url, T f(dynamic e)) async {
    try {
      final response = await _http.get(url);
      var data = JSON.decode(response.body);
      print(data);
      if(data == null)return null;
      final ts = f(data);
      return ts;
    } catch (e) {
      _handleError(e);
      return null;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

它会导致此错误:

意外的标记'未来'.

Future get(String url,T f(dynamic e))async {

^^^^^^

当我重命名方法时说get1错误就消失了.这是正常的吗?我有其他类,方法名为get,工作得很好.我在这里错过了什么吗?

请参阅github上的问题

更新:

在我看来,它不是一个标识符问题.因为我可以命名一个方法get,不会有任何错误.此外,还有一些内置类具有名为get(例如Clientclass)的方法.它似乎命名一个泛型方法来get导致错误:get<T>().我赞同Vyacheslav Egorov - 正如评论中所述,我认为这是一个解析器错误.

Gün*_*uer 6

get 是用于定义getter的内置标识符,不应用作标识符

https://www.dartlang.org/guides/language/language-tour在此输入图像描述

  • 它不应该导致错误.语法允许你有一个名为`get`的方法,你就不能拥有一个名为`get`的类.这在解析器中看起来像是一个bug. (2认同)