【问题标题】:Dart how to pass generic function to isolateDart如何传递泛型函数来隔离
【发布时间】:2020-12-22 20:12:23
【问题描述】:

有没有办法在生成时将通用函数作为参数传递给 Isolate?我附上了我的代码的简化版本(不工作),但有没有办法在没有动态的情况下存档?或者 functionToCall 的类型是在运行时而不是在编译时决定的,因此无法决定隔离?

import 'dart:isolate';

class TestClass {
  // ...
}

void main(List<String> args) {
  ReceivePort receivePort = ReceivePort();

  Isolate.spawn(functionToCall<TestClass>, receivePort.sendPort);
}

void functionToCall<T>(SendPort sendPort) {
  // ...
}

【问题讨论】:

    标签: dart dart-isolates


    【解决方案1】:

    关于泛型类型的所有内容都被称为编译的一部分,并且“具体化”以在运行时对相同的信息进行双重检查。

    【讨论】:

    • 好的,这很好:) 但是我怎样才能将通用函数传递给 Isolate.spawn 方法呢?我来自 C++,模板没有问题,并按照我的示例所示使用它。
    • 每个 Isolate 可能只需要一个 API。如果您有更多 API,请生成更多 Isolate。 :)
    【解决方案2】:

    我认为这里的问题可能与 Isolate 无关,但我不知道在 Dart 中有什么方法可以创建对泛型函数的函数引用。

    例如,你当然可以调用你的泛型函数:

    functionToCall<TestClass>(myPort);
    

    但是我看不到如何为特定类型(TestClass)创建对函数的引用,并且它是您需要传递给 spawn 方法的函数引用,所以我认为这是您正在运行的 Dart 中的限制到这里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      相关资源
      最近更新 更多