有没有直接调用命名重载运算符函数的语法

时间:2014-01-30 15:45:17

标签: dart

尝试反转地图,以下方法可以正常工作:

  var x = { 'dart' : 'fun', 'dentist' : 'painful', };
  var xInv = x.keys.fold({}, (prev, elm) { prev[x[elm]] = elm; return prev; });

是否有语法直接调用'operator [] =(,)',所以你也可以使用级联?像这样的东西不起作用:

  var xInv = x.keys.fold({}, (prev, elm) => prev..'operator[]='(x[k], k));
  var xInv = x.keys.fold({}, (prev, elm) => prev..operator[]=(x[k], k));

1 个答案:

答案 0 :(得分:2)

这不是你想要的?

Map<String,String> xInv2 = x.keys.fold({}, 
    (Map<String,String> prev, String elm) => prev..[x[elm]] = elm);

使用return语句创建与第一个示例相同的结果。

(您不必添加添加类型注释。我更容易理解代码的意图)