gpt4 book ai didi

flutter - dart在函数参数中添加数据类

转载 作者:行者123 更新时间:2023-12-03 03:38:23 25 4
gpt4 key购买 nike

我有三种这样的方法:

func1() async {
...
var list = (response['contents'] as List).map((i) => Quotation.fromJson(i)).toList();
...
} // has 20 lines

func2() async {
...
var list = (response['contents'] as List).map((i) => Delivery.fromJson(i)).toList();
...
} // has 20 lines

func3() async {
...
var list = (response['contents'] as List).map((i) => Discovery.fromJson(i)).toList();
...
} // has 20 lines

现在我想添加一个参数来概括 SomeClass.fromJson(i)
所以代码会像这样
generalFunc( someType SomeClass ) async {
...
var list = (response['contents'] as List).map((i) => SomeClass.fromJson(i)).toList();
...
}

... call generalFunc(Quotation) // reduce 19 lines
... call generalFunc(Delivery) // reduce 19 lines
... call generalFunc(Discovery) //reduce 19 lines


我该如何做到这一点?谢谢..

最佳答案

声明参数someType SomeClass时,您需要一个SomeClass对象。如果这是您想要的,则可以声明dynamic类型的参数。

请参见下面的代码:

generalFunc( generic SomeClassObject ) async {
...
var list = (response['contents'] as List).map((i) => SomeClassObject.fromJson(i)).toList();
...
}

... call generalFunc(quotationObject) // reduce 19 lines
... call generalFunc(deliveryObject) // reduce 19 lines
... call generalFunc(discoveryObject) //reduce 19 lines

但是,如果您想通过类(class)……那是不可能的。但是您可以通过将参数作为类的选择器来解决。

请参见下面的代码:
enum SomeClass {
Quotation,
Delivery,
Discovery
}

generalFunc({ SomeClass someClass }) async {
...
var list;
if(someClass == SomeClass.Quotation){
list = (response['contents'] as List).map((i) => Quotation.fromJson(i)).toList();
}
else if(someClass == SomeClass.Discovery) {
list = (response['contents'] as List).map((i) => Discovery.fromJson(i)).toList();
}
else if(someClass == SomeClass.Delivery) {
list = (response['contents'] as List).map((i) => Delivery.fromJson(i)).toList();
}
...
}

... call generalFunc(someClass: SomeClass.Delivery);
... call generalFunc(someClass: SomeClass.Discovery);
... call generalFunc(someClass: SomeClass.Qoutation);

关于flutter - dart在函数参数中添加数据类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59127616/

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