gpt4 book ai didi

generics - 如何在dart中创建具有通用返回类型的方法

转载 作者:行者123 更新时间:2023-12-03 04:35:10 24 4
gpt4 key购买 nike

我有一个这样定义的枚举

enum PropertyType { apartment, villa, plot }
enum PossesionType { readyToMove, underConstruction }
我正在尝试创建一个通用方法,当给定一个字符串作为输入时,该方法将向我返回正确的枚举

class Property<T> {
T getGenericType(String text) {
switch (text) {
case 'Ready to move':
return PossesionType.readyToMove;
break;
case 'Apartment':
return PropertyType.apartment;
break;
....
....
....
default:
return PossesionType.readyToMove;
}
}

我知道这会引发错误,因为它期望返回类型为T,要在没有泛型的情况下正常工作,我需要编写两个具有不同返回类型的不同函数,但两个函数基本上都将执行相同的操作。
  PropertyType getSelectedProperty(String text) {
switch (text) {
case 'Apartment':
return PropertyType.apartment;
break;
case 'Villa':
return PropertyType.villa;
break;
case 'Plot':
return PropertyType.plot;
break;
default:
return PropertyType.apartment;
}
}

PossesionType getSelectedPossession(String text) {
switch (text) {
case 'Ready to move':
return PossesionType.readyToMove;
break;
case 'Under Construction':
return PossesionType.underConstruction;
break;
default:
return PossesionType.readyToMove;
}
}
我是泛型新手,所以有人可以帮助我了解如何实现这一目标。

最佳答案

您需要编写两个不同的函数。
调用诸如T parseProperty<T>(String text) { ... }之类的通用函数时,您需要知道在编译时返回哪种类型。否则,您将必须传递dynamic作为类型参数。
您还已经注意到,仅对返回类型进行抽象处理会使实现该函数变得困难。您必须将as T放在每个返回表达式上,因为无法发明未知类型的对象。
总而言之,如果您在编译时知道类型,则最好要么拥有两个函数,要么不拥有一个返回Object的函数。

关于generics - 如何在dart中创建具有通用返回类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64289445/

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