繁体   English   中英

如何检查 Dart NNBD 中的泛型类型是否可以为空?

How do I check whether a generic type is nullable in Dart NNBD?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

假设我有一些 function 将泛型类型作为参数。 如何在 function 中检查泛型类型参数是否可以为空? 我想做这样的事情:

void func<T>() {
  print(T is nullable);
}

void main(){
  func<int>(); //prints false
  func<int?>(); //prints true
}

我能想到的就是检查T.toString()是否以? 这是非常hacky。

4 个回复

尝试:

bool isNullable<T>() => null is T;

它使用支持 inheritance 的is运算符创建一个新的 List 实例来验证它的类型是否可以为空:

bool isNullable<T>() => <T?>[] is List<T>;

我经常遇到这种情况。 @Irn 方法有效,除了TType (使用泛型时),它总是会返回说T不是 null。

我需要测试Type的实际类型而不是Type its self。

这就是我所拥有的,对我来说非常有效。

bool get isNullable {
  try {
    // throws an exception if T is not nullable
    final value = null as T;
    return true;
  } catch (_) {
    return false;
  }
}

接受的答案实际上只是检查类型是否可以是 null。 它不关心您正在操作 null 运算符的类型。

如果你想检查一个类型是否是一个特定的可空类型,也就是如果你想检查一个类型是否具体是DateTime? 而不是String? ,您不能通过T == DateTime? 因为这与三元运算符语法冲突。

但是,由于 dart 允许将可为空的类型传递给通用 arguments,因此可以这样:

bool isType<T, Y>() => T == Y;

isType<T, DateTime?>()有效。

3 如何在 Swift 中检查泛型类型是否为零

我正在尝试将 all 函数从 python 复制到 swift,首先检查列表中的任何 nill 项目,但我很难检查可选项目。 出于某种原因,我可以发送一个可选字符串(例如字符串),即使它说它为零,它仍然通过 if 语句传递,它不在函数之外。 关于如何处理这种情况或其他方式的任何建议? 谢谢! ...

2014-07-27 01:43:56 2 1614   swift
4 dart:如何检查属性的泛型类型?

像下面这样使用时如何检查道具类型 void main(){ var obj = Ball&lt;PassData&gt;(data: PassData(id: 1,nama: 'asdas')); print('${obj.get()}'); } class Ball&lt;T&gt;{ ...

2020-09-29 06:09:41 2 171   dart
5 如何在 flutter/dart 中创建泛型类型的对象?

我们如何在 dart 中创建泛型类型的对象? 对于我的用例,我的每个 api 响应都包装为ApiResponse类。 对于登录 api 响应,我得到一个 json 对象,例如 因此,为了解析这些响应,我创建了如下类,但它们抛出编译时错误,指出未为类“Type”定义方法“fromJson”。 ...

6 我如何在 dart 中调用泛型类型的方法

有几个模型具有相同的结构,{ type: xxx, settings: xxx},所以我想使用具有泛型类型“T”的父类“WidgetConfig”来实现这一点,但是当我添加“fromJson”时出现问题“ 方法。 我如何调用泛型类型的方法或任何其他方式来实现它? 然后我使用抽象类但仍然无法正常 ...

10 如何声明可以接受可为空 Guid 的泛型类型类?

我有以下几点: 在这个类中有一个名为GenerateAPIResult的静态方法,它返回一个APIResult&lt;T&gt;类型的对象,但是T有时可能为空,这对我的所有自定义类都很好,但我不能输入Guid? ,因为它是一个结构体。 如何配置此类以处理Guid? 返回类型? 编辑 - 这是 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM