Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart中两种类型的比较_Dart - Fatal编程技术网

Dart中两种类型的比较

Dart中两种类型的比较,dart,Dart,我正在寻找一种方法来比较Dart中的两种类型,并在它们相同时获得True 我有一个方法: SomeItemType示例方法(映射值){ if(SomeItemType.toString()==“BuiltMap”){ 将BuiltMap.from(值)作为SomeItemType返回; } // (...) } 其中我必须检查类型参数SomeItemType是否实际等于类型BuiltMap。 到目前为止,我发现的唯一方法是上面的字符串比较,在我看来这不是很优雅 我尝试过以下解决方案,但都不适合

我正在寻找一种方法来比较Dart中的两种类型,并在它们相同时获得
True

我有一个方法:

SomeItemType示例方法(映射值){
if(SomeItemType.toString()==“BuiltMap”){
将BuiltMap.from(值)作为SomeItemType返回;
}
// (...)
}
其中我必须检查类型参数
SomeItemType
是否实际等于类型
BuiltMap
。 到目前为止,我发现的唯一方法是上面的字符串比较,在我看来这不是很优雅

我尝试过以下解决方案,但都不适合我:

SomeItemType是BuiltMap
//返回False
SomeItemType==BuiltMap

//错误:运算符“需要检测类型变量是否包含与某些已知类型“相同”的类型

在这个检查中,我可能不会要求相等,我只会检查变量的类型是否是已知类型的子类型

你可以这样做:

class_TypeHelper{}
bool isSubtypeOf()=>\u TypeHelper()是\u TypeHelper;
//或者只是…=>[]是列表;
...
如果(isSubtypeOf()){…}
如果要检查类型相等,则必须确定类型相等的含义。 最简单的是“相互子类型”,这意味着:

bool isMutualSubtypes()=>isSubtypeOf()&&isSubtypeOf();
//or=>isSubtypeOf();
//or=>isSubtypeOf();
这将接受,例如,
ismutalsubtypes()
,因为这两种类型都是顶级类型

类型标识更难检查,因为语言本身没有这种概念。如果类型是相互的子类型,则它们在运行时被认为是等效的(我们静态地区分
void
dynamic
,但在运行时不区分)。 您可以尝试以下方法:

bool isSameType()=>S==T;
类型
对象的平等性是非常不明确的,不能保证比相互子类型更好地工作。 绝对不要使用字符串比较:

//不要使用!
bool isSameType()=>“$S”==“$T”;//糟糕!

因为可以使用相同的名称创建不同的类型。

您能为示例添加更多详细信息吗?如果不知道如何调用
exampleMethod
“就不可能真正了解问题。您需要检测类型变量是否包含与某个已知类型“相同”的类型。”
这正是我所需要的。谢谢你的回答!