是否可以像 dart 中的 javascript 一样使用 dart 在列表中使用解构和传播?

Sub*_*ndu 8 javascript dart flutter

我已经玩了几天 flutter,还没有掌握它的窍门。在尝试 dart 及其方法时,我开始思考如何让学习曲线更容易开始与 javascript 相关(因为我非常熟悉它,个人选择,人们可能有或使用不同的方法)。

我有一个小疑问,在 dart 中是否可以同时解构和传播?我知道如果不可能,我如何用 dart 实现这样的目标?我试图获取变量中数组的第一项和字符串中的其余数组值,并将它们作为字符串连接起来。我必须遍历所有这些吗?不能以更短或更漂亮的方式(透视)?

// JavaScript
var someArray = ['1', '2' ,'3', '4'];
var [first, ...rest] = someArray;
var restAsString = rest.join(' ');
console.log(first); // 1
console.log(restAsString); // 2 3 4
Run Code Online (Sandbox Code Playgroud)
//dart
main(List<String> arguments) {
  List<String> someList = ['1', '2' ,'3', '4'];
  String restString = '';
  String firstString = '';
  for (int i = 0; i < someList.length; i++) {
    if(i == 0 ) {
      firstString = someList[i];
    } else {
      restString = '$restString ${someList[i]}';
    }

  }
  print(firstString); // 1
  print(restString);  // 2 3 4
}
Run Code Online (Sandbox Code Playgroud)

nde*_*nou 6

Dart 3 编辑(2023 年):

现在可以使用 Dart 3 进行解构。此代码现在有效:

final someArray = ['1', '2' ,'3', '4'];
final [first, ...rest] = someArray;
final restAsString = rest.join(' ');

print(first); // 1
print(restAsString); // 2 3 4
Run Code Online (Sandbox Code Playgroud)


Sup*_*Sam 1

以下解决方案改变了原始列表,但实现了您的目标。

List<String> someList = ['1', '2', '3', '4'];

final String firstString = someList.removeAt(0);
final String restString = someList.join(' ');

print(firstString); // 1
print(restString); // 2 3 4
Run Code Online (Sandbox Code Playgroud)