728x90
리스트(List)
다트는 리스트 컬렉션만 제공하고 배열(arrays)은 별도로 제공하지 않는다.
- 인덱스
- 슬라이스
- 원소 추가
- 원소 삭제
- 원소 변경
리스트 변수 선언
// 대괄호로 나열한다.
const list = [1, 2, 3];
// 원소의 끝에 매번 ,(콤마)를 붙여도 동작한다.
const list = [
'Car',
'Boat',
'Plane',
];
원소 끝에 콤마를 붙이는 것(trailling comma)이 코드의 가독성에 더 좋다.
리스트의 길이와 인덱싱
var list = [1, 2, 3];
assert(list.length == 3);
length 속성으로 리스트의 길이, 원소의 갯수를 구할 수 있다.
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1);
원소에 접근하기 위해 첨자(subscript)로 접근(인덱싱, indexing)한다.
이렇게 접근한 원소의 값을 변경할 수도 있다.
변경 불가(immutable) 리스트 생성
var list = const [1, 2, 3];
// list[1] = 1; // 불변 속성 리스트의 원소를 변경할 경우 에러가 발생한다.
위와 같이 리스트를 const 키워드로 상수를 만들어 변경 불가 리스트를 만들 수 있다.
하지만 위와 같이 선언하는 것보다 다트 린터(Linter)는 아래와 같이 선언하는 걸 권장한다.
const list = [1, 2, 3];
..., ...? 연산자
컬렉션 if 연산자
var nav = ['Home', 'Furniture', 'Plants', if (promoActive) 'Outlet'];
컬렉션 for 연산자
var listOfInts = [1, 2, 3];
var listOfStrings = ['#0', for (var i in listOfInts) '#$i'];
assert(listOfStrings[1] == '#1');
집합(Set)
집합(Set)은 중복된 원소를 허용하지 않는 리스트이다.
- 인덱스
- 슬라이스
- 원소 추가
- 원소 삭제
- 원소 변경
맵(Map)
- 키 추가
- 키 삭제
- 키-값 변경
Cascade notation(..)
.. 을 사용하면 하나의 오브젝트에 함수호출, 필드접근을 순차적으로 수행할 수 있다.이 과정 중간에 어떤 값이 반환되더라도 무시된다.
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
이 코드는 아래의 코드와 동일하게 동작한다.
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
.. 은 중첩도 가능하다.
final addressBook = (AddressBookBuilder()
..name = 'jenny'
..email = 'jenny@example.com'
..phone = (PhoneNumberBuilder()
..number = '415-555-0100'
..label = 'home')
.build())
.build();
주의할점은 실제 오브젝트를 반환하는 함수에 .. 를 사용해야한다.
var sb = StringBuffer();
sb.write('foo')
..write('bar'); // 'void' 타입에는 'write' 메소드가 정의되어 있지 않다.
Spread operator(…), null-aware Spread operator(…?)
... 은 여러개의 항목을 collection에 간편하게 추가할 수 있게 해준다.
var list = [1, 2, 3];
var list2 = [0, ...list]; // [0, 1, 2, 3]
assert(list2.length == 4);
추가하려는 항목이 null 일 수 있다면 아래와 같이 ...? 를 사용한다.
var list;
var list2 = [0, ...?list];
assert(list2.length == 1);
오늘도 열심히 하는 당신 구웃 ~!
728x90
LIST
'Flutter' 카테고리의 다른 글
Flutter - 타입 검증 연산자 (1) | 2023.11.02 |
---|---|
Flutter - NullAware (4) | 2023.11.02 |
Flutter - 문자열 처리 (3) | 2023.11.01 |
Flutter Package Sizer (2) | 2023.10.25 |
StatefulWidget의 LifeCycle(생명주기) (2) | 2023.09.19 |