【问题标题】:Dart: The concrete return type isn't of type genericDart:具体返回类型不是泛型类型
【发布时间】:2019-06-08 06:15:52
【问题描述】:

这是我想在Dart 中实现的目标:

typedef Adder<T> = T Function<T>(T a, T b);

Adder<int> createIntAdder() {
  int add(int a, int b) {
    return a + b;
  }

  return add;
}

上面的代码无法编译。

这也不是:

Adder<int> createIntAdder() {
  return (int a, int b) => a + b;
}

上面写着:

The return type '(int, int) -&gt; int' isn't a '&lt;T&gt;(T, T) -&gt; T', as defined by the method 'createIntAdder'.

我从来没有说过。我正在返回一个具体类型 int不是通用 T

谁能解释一下?

【问题讨论】:

    标签: dart


    【解决方案1】:

    我认为你的 typedef 错误。它应该是:

    typedef Adder<T> = T Function(T a, T b);
    

    我不完全确定你的 typedef 会得到什么样的返回类型,但将泛型部分加倍似乎是错误的。

    【讨论】:

    • 好收获。第二个泛型&lt;T&gt; 也加了下划线,IDE 表示Avoid shadowing type parameters.。我发帖的时候没看到。
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多