在Dart中,与方法结合使用的方法的null感知运算??符不能很好地工作。
具有如下调用链的图像:
object.getter.getter.getter.getter
Run Code Online (Sandbox Code Playgroud)
现在,当when object可以为null,并且我不希望出现异常时,我必须这样写:
object?.getter?.getter?.getter?.getter
Run Code Online (Sandbox Code Playgroud)
尽管每个吸气剂只能object为空,但这是一个空检查,但是getter显然不起作用。
我对此很好。但是现在我有一个场景,我想在返回null时返回另一个值,但是我正在使用列表:
list[index][index][index]
Run Code Online (Sandbox Code Playgroud)
这不起作用:
list?[index]
Run Code Online (Sandbox Code Playgroud)
而这个不存在List的在飞镖。
list?.get(index)
Run Code Online (Sandbox Code Playgroud)
list?[index]?[index]?[index] ?? 0
Run Code Online (Sandbox Code Playgroud)
我知道只有list这样的地方null。
这个长代码可以正常工作:
list == null ? 0 : list[index][index][index]
Run Code Online (Sandbox Code Playgroud)
Gün*_*uer 16
索引运算符([])没有空感知运算符
您可以elementAt()改用:
list?.elementAt(index)?.elementAt(index)?.elementAt(index) ?? 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |