代码之家  ›  专栏  ›  技术社区  ›  Dimitris Andreou

列表的模式匹配,捕获“…rest”元素

  •  0
  • Dimitris Andreou  · 技术社区  · 2 年前

    我是达特的新手。我想这样做:

    var list = [1, 2, 3, 4];
    switch (list) {
      case [var a, var b, var ...rest]:
        // use a, b, rest
      default: ...
    }
    

    它不喜欢 var ...rest 部分,不接受此语法。但是,有什么语法可以让我捕捉到这一点吗?

    但我可以做到:

      case [_, _, ...]:
        var [a, b, ...rest] = list;
    

    但是,如果析构函数模式可以在赋值中工作,但不能在开关中工作,这看起来像是一种语言限制。

    谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   julemand101    2 年前

    语法为:

      var list = [1, 2, 3, 4];
      switch (list) {
        case [var a, var b, ...var rest]:
          print('$a, $b and the $rest'); // 1, 2 and the [3, 4]
      }