代码之家  ›  专栏  ›  技术社区  ›  Suragch Shmidt

是什么??DART中的双问号?

  •  6
  • Suragch Shmidt  · 技术社区  · 6 年前

    以下代码行有两个问号:

    final myStringList = prefs.getStringList('my_string_list_key') ?? [];
    

    什么意思?

    这是一篇问答式的自答文章。我记得当我从爪哇学习斯威夫特时,这很混乱。我想对于新的DART学习者来说是一样的,在堆栈溢出时找不到它的问题。我的答案如下。

    1 回复  |  直到 6 年前
        1
  •  7
  •   Suragch Shmidt    6 年前

    这个 ?? 双问号运算符表示“如果为空”。以下面的表达式为例。

    String a = b ?? 'hello';
    

    这意味着 a 等于 b 但如果 则为空 等于 'hello' .

    另一个相关操作员是 ??= . 例如:

    b ??= 'hello';
    

    这意味着如果 为空,然后将其设置为 hello . 否则,不要改变它。

    参考文献

    注释

    • In Swift ?? 称为nil合并运算符,其中 方法 无效的 . 我找不到 ?? 不过,DART文档中的操作员。