gpt4 book ai didi

dart - 为什么现在可以使用可调用类呢?

转载 作者:行者123 更新时间:2023-12-03 03:39:58 29 4
gpt4 key购买 nike

我试图让可调用的类在dart中工作,但是遇到了一些问题。我首先意识到的是正常功能

myFunc() {
return 'myFunc';

}

Function.apply(myFunc,null);

不能作为可调用对象。

然后我意识到,如果我这样做
final myFunc = () => 'myFunc';

Function.apply(myFunc,null);

这可行。

所以现在我正在上课尝试
class Cars {
call(Map<Symbol,dynamic> args) {
return "ride";
}
const Cars();
}
final cars = Cars();
final jobs = {cars.hashCode :cars};

void main() {
int code = cars.hashCode;
print(Function.apply(jobs[code],null));
}

但是在DartPad中,出现以下错误
Uncaught exception:
NoSuchMethodError: method not found: 'call'
Receiver: Closure 'call$1' of Instance of 'Cars'
Arguments: []

调用方法有什么限制吗?还是它与我在文档中找不到的Function.apply()一起工作?

谢谢。

最佳答案

您的第一个示例对我来说很好用,但是您的程序需要一个切入点:

myFunc() {
return 'myFunc';
}

void main() {
print(Function.apply(myFunc, null));
}

在您的类示例中,您的 call方法需要一个 Map,但是您传递的是null。没有参数为零的 call方法,因此 method not found: 'call'错误。

解决此问题的一种方法是在 Map的参数列表中添加一个空的 Function.apply:

class Cars {
call(Map<Symbol,dynamic> args) {
return "ride";
}
const Cars();
}

final cars = Cars();
final jobs = {cars.hashCode :cars};

void main() {
int code = cars.hashCode;
print(Function.apply(jobs[code], [Map<Symbol,dynamic>()]));
}

值得注意的是,您可以在具有任何数量参数的类上调用任何方法:

class Car {
go(int speed, int wheels) {
print('$speed mph, $wheels wheels');
}
}

void main() {
var car = Car();
Function.apply(car.go, [50, 4]);
}

关于dart - 为什么现在可以使用可调用类呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57611455/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com