Можно ли использовать деструктуризацию и распространение в списке с дротиком типа javascript в дротике? - PullRequest
0 голосов
/ 09 мая 2020

Я уже несколько дней играю с флаттером, не разобрался с ним. Когда я опробовал дротик и его методы, это заставило меня задуматься о том, как упростить процесс обучения, и начал относиться к javascript (поскольку я очень хорошо знаком с ним, личный выбор, люди могут использовать или использовать другой подход).

Я застрял с одним маленьким сомнением: возможно ли одновременно разрушать и распространять в дротике? Я понимаю, если это невозможно, как мне добиться чего-то подобного с помощью дротика? Я пытаюсь получить первый элемент массива в переменной и остальные значения массива в строке, объединяя их в виде строки. Должен ли я пройти через все oop? Не может быть короче или красивее (хотя в перспективе)?

// 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
//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
}

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Для этого, не изменяя исходный список, можно написать:

  var someList = <String>['1', '2', '3', '4'];
  assert(someList.length > 0);
  print(someList[0]);
  print(someList.sublist(1).join(' '));
1 голос
/ 09 мая 2020

Следующее решение изменяет исходный список, но достигает вашей цели.

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
...