개발 |/Flutter

[Flutter] 자료형에 대한 다양한 메소드 & 비동기 (Future & stream)

어섬 2022. 10. 5. 16:29

 

형 변환하는 법. = map을 이용하면 거진 서로 왔다갔다 변형 가능하다.

 

List =>리스트

List.asMap() => 맵

List.toSet() => 세트

 

Map MyMap = MyList.asMap();

MyMap.keys.toLIst();

MyMap.values.toList();

맵에서 키와 밸류는 모두 물론 리스트화 가능. 

 

Set MySet = Set.from(MyList);

MySet.toList(); 이렇게도 바로 가능하지. 

 

 

Mylist.map( (x) => 'list $x' ) 가능.

final myMap2 = Mylist.map( (x) => 'list $x' ) ;

final myMap3 = Mylist.map( (x) => 'list $x' ) ;

 

myMap2 != myMap3

다른 리스트 계속생성가능.

 

 

 

String도 나눠줄 수 있음.

String을 .split('')쓰면 파이썬 처럼 그냥 각 literal로나눌 수있음.

그리고 List로 반환됩니다. 

 

Map을  mapping 한다면?

똑같이 map 메소드 쓸 수 있습니다.

 

myMap = { 'juhyeong': "man" , "easum": "man", 'ej' : 'woman' }

이라면

final result = myMap.map( (key,value) => MapEntry (

    'Name: $key', "Gender: $value" 

)

);

 

MapEntry가 맵만들어주는  중요한 클래스가 있습니다.

 

하지만 Map->Map 바꾸는 경우는 잘 없고, key를 가져와서 바꾸는데

야생의 Iterable이 나타났다.

( ) 괄호로 된 자료형이 나오길래, 이게 뭔가 했다. Iterable 나는 처음 마주해본다.

참고

 

.Where 도 있음 (필터링이 가능하다)

 

map이랑 얼핏보면 비슷하지만, map은 리턴한 값들을  모아서 이터러블을 리턴한다.

그래서 map해주고 toList()를 붙여줘서 List로 바꾸었지.혹은 toSet로 세트형태로 바꾸었다.

이터러블 자체는 인덱싱이 안되어서 쓸 수 없음 ㅇㅇ

map함수는 리턴값이 True냐 False냐에 따라서 마지막 리턴이

True인값들을 모은 이터러블임.ㅇㅇㅇ 

 

 

 

.reduce() 라면 어떨까?(피보나치 생각하면될듯)

 

numbers.reduce(  (prev, next ) ){ 연산후  리턴}

 

numbers라는 리스트에서 첫번째 값과 두번째 값을 연산함 

=> 그리고  prev변수에 그게 들어감. 

그래서 다음 리스트 항목과 prev가 또 연산이 됨. 

마치 재귀함수같이 생김 아니면 피보나치수열이거나 

 

그런데 문제라고 하면, numbers는 <int> 자료형 리스트이기 때문에, 

String을 반환을 못함. 

.fold()

하지만 fold는 쓰면 타입도 자유롭게 리턴가능하다.

첫번째 파라미터는 

 

[...yes] 

cascading operator

map과 마찬가지로 완전 새로운 리스트를 만든다.