gpt4 book ai didi

dart - 变量类型为'is'的语句

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

我想检查一下,如果我的变量k的类型为T。
我的方法是

int k=1;
Type T=int;
if(k is T) print('same type');
但这是行不通的。如果我写的话就可以了
if(k is int)
但我想更改变量的类型。
谢谢你的回答

最佳答案

您无法使用Dart中的Type对象进行类型检查。Type对象不是类型,它只是表示可以与dart:mirrors反射库一起使用的类型的标记。实际上,它不能用于其他任何用途。
如果需要进行类型检查,则需要将类型存储为类型变量,这意味着您需要通用的东西,或将其存储在纯代码中作为闭包。
闭合方法更简单,但可读性较低:

int k = 1;
var typeChecker = (o) => o is int;
if (typeChecker(o)) print("k has the right type");
使用通用帮助程序类更为通用:
class Typer<T> {
bool isType(Object o) => o is T;
bool operator >=(Typer other) => other is Typer<T>;
bool operator <=(Typer other) => other >= this;
}
...

var k = 1;
var type = Typer<int>();
if (type.isType(k)) print("k is integer");
简而言之,请勿将 Type用于 dart:mirrors以外的任何内容,因为它实际上对其他任何功能都不有用。

关于dart - 变量类型为'is'的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62819244/

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