>source

고려 : [ 'A', 'B', 'C']

하고 싶습니다

list.move("B", -1);
list.move("A", 1);

결과는 [ "B", "C", "A"] 입니다.

Dart 목록에서 항목을 이동하는 데 일종의 라이너가 있습니까? 더 쉬운 방법이 있는지 궁금하다면 몇 줄로 수동으로이 작업을 수행 할 수 있습니다.


  • 답변 # 1

    선형? 나는 아무것도 없다고 생각합니다. 어쨌든 여기에 샘플 code가 있습니다.

    extension on List<String> {
      void move(String element, int shift) {
        if (contains(element)) {
          final curPos= indexOf(element);
          final newPos= curPos + shift;
          if (newPos >= 0 &amp;
    &amp;
     newPos < length) {
            removeAt(curPos);
            insert(newPos, element);
          }
        }
      }
    }
    void main(List<String> args) {
      var list= ['A', 'B', 'C', 'D', 'E', 'F'];
      print(list);
      list.move('B', 2);
      print(list);
      list.move('B', -3);
      print(list);
    }
    

    결과 :

    [A, B, C, D, E, F]
    [A, C, D, B, E, F]
    [B, A, C, D, E, F]
    

    내가 생각하기에 이것이 정확하다고 생각하면 아니오라고 답합니다.이 작업을 수행하는 지름길은 없습니다. 스 니펫에 대한 Thx!

    shawnblais2021-02-23 01:16:14
  • 이전 java : 이 작은 프로그램을 Eclipse에서 실행하려면 어떻게해야합니까?
  • 다음 Python에서 지팡이로 OpenCL을 비활성화하는 방법