본문 바로가기
TIL

dart 1

by 은지:) 2023. 11. 27.
728x90
반응형

 

 

String // int // bool // var // dynamic

 

 

둘 다 재할당 가능

둘 다 재선언 불가능

 

처음에 지정할 때 var 는 타입 고정

dynamic 은 any 같이 모든 가능

 

 

처음에 타입을 지정하기 때문에

 

let name;

 

let name = "1234"

 

name = 1234

 

타입 변형 가능

 

=> 정말 잘 안 씀

 

 

 

 

 

List

 

콘솔 찍으면 [] 나옴

이렇게 보면 둘 다 차이가 없는데

new List()는 좀 더 기능이 있다고 함 => 근데 다트 업데이트 되면서 막아놓은 거 같음 저렇게 쓰지 말라고 함(gpt도 그럼)

 

 gpt가 알려준 수정안

void main() {
  List<String> redVelvetList = [];
  print(redVelvetList);
    
  List<String> redVelvetList2 = List();
  print(redVelvetList2);
}

  

push 대신에 add를 쓰면 []에 push 됨

 

타입 넣어놓으면 해당 타입만 들어갈 수 있음

 

++ List의 길이를 지정할 수도 있음

 

 

 

이렇게 쓰면 된다는데 이 문법은 dart2 들어서면서 없어져서 프로그램에서 오류남

강의에서는 print [null, null, null] 로 찍힘

아마 자리를 미리 만들어두는 듯 (크기를 먼저 정해두고 메모리 할당 먼저 하는 듯)

 

 

void main() {
  List<String> btsList = List.filled(3, ''); // 또는 List<String>.filled(3, '');
  print(btsList);
}

 

이렇게 쓴다고 함

얘는 [, , ,] 이렇게 나옴

만약 위처럼 null로 찍고 싶다면

void main() {
  List<String?> btsList = List.filled(3, null);
  print(btsList);
}

 

이렇게 null 이라고 지정

기본값이 null 이던 걸 설정가능하게끔 바꾼 거 같음

 

++ 여기서 ? 이란

 

dart는 null 안정성을 나타냄

그래서 변수에 null 못 넣음

 

근데 허용되어야 할 수도 있으니까

? <= 이거 써서 nullable 타입을 선언하는 거임

 

String? nullableString = null;

 

예를 들면 이렇게

 

 

그럼 메모리 할당 먼저한 List는 어떻게 update ?

 

* 미리 값을 정해두어서 삭제 추가 안됨

 

add 도 안됨

removeAt도 안됨

=> removeAt(2) : index2를 지운다

 

- 인덱스를 사용해서 update 침

 

btsList[0] = "RM"

 

 

 

++++ print 찍을 때 {}, ${}

 

void main() {
  String name = "John";

  // 사용 가능한 두 가지 방법:
  print("Hello, $name!");
  print("Hello, ${name}!");
}

 

둘 다 가능함

스트링 안에서 변수 보여줄 때 하는 거

 

근데 가독성을 위해서 {}를 추가로 붙이는 거라고 함

 

 

값들을 넣은 채로 선언

 

이렇게 두 가지 방법이 있음

근데 2번째 문법은 당연히 안 됨

 

void main() {
  List<String> stringList = ["가", "나", "다"];
  
  print(stringList);
  
  List<String> stringList2 = List<String>.from(["가","나","다"]);
  
  print(stringList2);
        
}

 

요즘엔 이렇게 쓰면 가능함

 

 

 

그럼 List.from 과 List() 의 차이는?

 

 

List.from 사용할 때

 

void main() {
  Set<String> stringSet = {'A', 'B', 'C'};
  
  // List.from을 사용하여 Set을 리스트로 변환
  List<String> stringList = List<String>.from(stringSet);
  
  print(stringList);
}

 

이미 다른 iterable 객체가 있는 경우에 쓰면 됨

iterable 객체가 이미 존재 => 이거 변환 시

 

- 원본 안 바뀜 복사해서 바꾸는 거임

 

 

 

List() 사용할 때

 

void main() {
  // 빈 리스트 생성
  List<String> stringList = List<String>();

  // 초기 요소 추가
  stringList.add('X');
  stringList.add('Y');
  stringList.add('Z');
  
  print(stringList);
}

 

초기에 빈 리스트를 만들어가면서 요소를 추가해야하는 경우

 

 

결론은 그냥 가독성 차이

 

 

 

map // set 이어서

728x90
반응형

'TIL' 카테고리의 다른 글

dart 3 <= enum, 타입 관련 이야기라 재밌음  (1) 2023.11.29
dart 2  (0) 2023.11.27
리액트 쿼리3  (2) 2023.11.26
제이쿼리 1 append, template  (0) 2023.10.06
리액트 쿼리 2  (0) 2023.09.30

댓글