【发布时间】:2018-07-18 18:42:55
【问题描述】:
假设您正在尝试访问地图中嵌套较深的孩子,而您无法期望他们的父母在那里。示例:
Map awesomeMap = {
"this":{
"is":{
"sometimes":"not here"
}
}
}
Map notAwesomeMap = {
"this":{
"haha":{
"we":"switched"
}
}
}
当我访问notAwesomeMap['this']['is']['sometimes'] 时,它会返回一个错误,因为['this']['is'] 是null,并且您无法查找null 的值['sometimes']。
这很好,但我希望能够使用条件成员访问运算符...
notAwesomeMap['this']?.['is']?.['sometimes']
但这不起作用......
没有将所有内容都包装在 try 块中,有没有处理这些情况的好方法?
编辑:我试着玩弄这个,但我没有发现任何真正有启发性的东西,但也许这给了某人一个想法
void main() {
Map nestedMap = {
'this':{
'is':{
'sometimes':'here'
}
}
};
final mapResult = nestedMap['this'];
print(mapResult); //returns {is: {sometimes: here}}
final nullResult = nestedMap['this']['is an'];
print(nullResult); // returns null
final nullifiedResult = nullify(nestedMap['this']['is an']['error']);
print(nullifiedResult); // returns error, but is this possible another way?
final errorResult = nestedMap['this']['is an']['error'];
print(errorResult); // returns error
}
nullify(object){
try {
final result = object;
return result;
}
catch (e) {
return null;
}
}
【问题讨论】:
-
github.com/dart-lang/sdk/issues/28389 是为此请求特殊语法的问题。
标签: dart