Flutter

dart 이둠

2μ£Όλ…˜ 2024. 3. 30. 14:33
λ°˜μ‘ν˜•

πŸ“˜ varλ₯Ό μ‚¬μš©ν•œ μ„ μ–Έ

λ³€μˆ˜λŠ” var λ³€μˆ˜λͺ… = κ°’; 으둜 μ„ μ–Έν•©λ‹ˆλ‹€. λ³€μˆ˜μ— 값이 λ“€μ–΄κ°€λ©΄ μžλ™μœΌλ‘œ νƒ€μž…μ„ μΆ”λ‘ ν•˜λŠ” νƒ€μž… μΆ”λ‘  κΈ°λŠ₯을 μ œκ³΅ν•˜λ―€λ‘œ λͺ…μ‹œμ μœΌλ‘œ νƒ€μž…μ„ μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.

void main (){
	
    var name = 'μ£Όλ…˜μ£Όλ…˜';
    print(name);
    
    // λ³€μˆ˜μ˜ κ°’ λ³€κ²½κ°€λŠ₯
    name = 'μ£Όλ…˜';
    print(name);
    
    // λ³€μˆ˜λͺ… 쀑볡은 λΆˆκ°€
    // var name = 'ν”ŒλŸ¬ν„°μ˜μ‹ '; <- 였λ₯˜λ‚¨

}

 

πŸ“˜ dynamic을 μ‚¬μš©ν•œ λ³€μˆ˜μ„ μ–Έ

var νƒ€μž…μ€ λ³€μˆ˜μ˜ 값을 μ‚¬μš©ν•΄μ„œ λ³€μˆ˜μ˜ νƒ€μž…μ„ μœ μΆ”ν•˜λŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€. νƒ€μž…μ„ ν•œ 번 μœ μΆ”ν•˜λ©΄ μΆ”λ‘ λœ νƒ€μž…μ΄ κ³ μ •λ©λ‹ˆλ‹€.

λ”°λΌμ„œ κ³ μ •λœ λ³€μˆ˜ νƒ€μž…κ³Ό λ‹€λ₯Έ λ³€μˆ˜ νƒ€μž…μ˜ 값을 같은 λ³€μˆ˜μ— λ‹€μ‹œ μ €μž₯ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ dynamic ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ³€μˆ˜μ˜ νƒ€μž…μ΄ κ³ μ •λ˜μ§€ μ•Šμ•„μ„œ λ‹€λ₯Έ νƒ€μž…μ˜ 값을 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

void main() {

	dynamic name = 'μ£Όλ…˜μ£Όλ…˜';
	name = 1;

}

 

πŸ“˜ final/constλ₯Ό μ‚¬μš©ν•œ λ³€μˆ˜ μ„ μ–Έ

finalκ³Ό constλŠ” λ³€μˆ˜μ˜ 값을 처음 μ„ μ–Έ ν›„ λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

void main () {

	final String name = 'λ‰΄μ§„μŠ€';
 	name = 'λ₯΄μ„ΈλΌν•Œ';	// μ—λŸ¬λ°œμƒ final둜 μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ„ μ–Έ ν›„ 값을 λ³€κ²½ λΆˆκ°€
    
    
  	const String name2 = 'μ•„μ΄λΈŒ';
 	name2 = 'λ‰΄μ§„μŠ€';	// μ—λŸ¬λ°œμƒ final둜 μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ„ μ–Έ ν›„ 값을 λ³€κ²½ λΆˆκ°€

}

 

- final은 λŸ°νƒ€μž„, constλŠ” λΉŒλ“œνƒ€μž„ μƒμˆ˜μž…λ‹ˆλ‹€.

- μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ 값이 ν™•μ •λ˜λ©΄ constλ₯Ό, μ‹€ν–‰ν•  λ•Œ ν™•μ •λ˜λ©΄ final을 μ‚¬μš©!

 

πŸ“˜ μ»¬λ ‰μ…˜

μ—¬λŸ¬ 값을 ν•˜λ‚˜μ˜ λ³€μˆ˜μ— μ €μž₯ν•  수 μžˆλŠ” νƒ€μž…μž…λ‹ˆλ‹€.

μ—¬λŸ¬ 값을 μˆœμ„œλŒ€λ‘œ μ €μž₯ν•˜κ±°λ‚˜(List), νŠΉμ • ν‚€κ°’ 기반으둜 λΉ λ₯΄κ²Œ 값을 검색해야 ν•˜κ±°λ‚˜(Map), μ€‘λ³΅λœ 데이터λ₯Ό μ œκ±°ν•  λ•Œ(Set) μ‚¬μš©λ©λ‹ˆλ‹€. μ»¬λ ‰μ…˜ νƒ€μž…μ€ μ„œλ‘œμ˜ νƒ€μž…μœΌλ‘œ 자유둭게 ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 큰 μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

 

πŸ”· List νƒ€μž…

- μ—¬λŸ¬ 값을 μˆœμ„œλŒ€λ‘œ ν•œ λ³€μˆ˜μ— μ €μž₯ν•  λ•Œ μ‚¬μš©

- 리슀트의 ꡬ성 λ‹¨μœ„λ₯Ό μ›μ†ŒλΌκ³  ν•©λ‹ˆλ‹€.

- 리슀트λͺ…[인덱슀] ν˜•μ‹μœΌλ‘œ νŠΉμ • μ›μ†Œμ— μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€.

- μΈλ±μŠ€λŠ” μ›μ†Œμ˜ 순번

- 제일 첫 μ›μ†ŒλŠ” 0으둜 μ§€μ •, λ§ˆμ§€λ§‰ μ›μ†ŒλŠ” 리슀트 길이 -1 둜 μ§€μ •

void main() {

  List<String> iveList = ['μœ μ§„', 'μ›μ˜', 'μ΄μ„œ', '레이', '리즈', '가을'];

  print('----------- 전체 리슀트λ₯Ό 좜λ ₯ν•΄λ³΄μž -----------');
  print(iveList);
  print('----------- 첫번째 μ›μ†Œλ₯Ό 좜λ ₯ν•΄λ³΄μž -----------');
  print(iveList[0]);
  print('----------- λ‹€μ„―λ²ˆμ§Έ μ›μ†Œλ₯Ό 좜λ ₯ν•΄λ³΄μž -----------');
  print(iveList[4]);
  print('----------- 리슀트 길이λ₯Ό 좜λ ₯ν•΄λ³΄μž -----------');
  print(iveList.length);

  print('----------- 인덱슀 κ°’ λ³€κ²½ -----------');
  iveList[3] = 'μ£Όλ…˜';

  print('----------- 전체 리슀트λ₯Ό 좜λ ₯ν•΄λ³΄μž -----------');
  print(iveList);
}
좜λ ₯κ°’



----------- 전체 리슀트λ₯Ό 좜λ ₯ν•΄λ³΄μž -----------
[μœ μ§„, μ›μ˜, μ΄μ„œ, 레이, 리즈, 가을]
----------- 첫번째 μ›μ†Œλ₯Ό 좜λ ₯ν•΄λ³΄μž -----------
μœ μ§„
----------- λ‹€μ„―λ²ˆμ§Έ μ›μ†Œλ₯Ό 좜λ ₯ν•΄λ³΄μž -----------
리즈
----------- 리슀트 길이λ₯Ό 좜λ ₯ν•΄λ³΄μž -----------
6
----------- 인덱슀 κ°’ λ³€κ²½ -----------
----------- 전체 리슀트λ₯Ό 좜λ ₯ν•΄λ³΄μž -----------
[μœ μ§„, μ›μ˜, μ΄μ„œ, μ£Όλ…˜, 리즈, 가을]

 

- 리슀트 κΈΈμ΄λŠ” lengthλ₯Ό 가져와 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

πŸ“˜ add() ν•¨μˆ˜

add() ν•¨μˆ˜λŠ” List에 값을 μΆ”κ°€ν•  λ•Œ μ‚¬μš©λ˜λ©° μΆ”κ°€ν•˜κ³  싢은 값을 λ§€κ°œλ³€μˆ˜μ— μž…λ ₯ν•˜λ©΄ λ©λ‹ˆλ‹€.

void main() {

  List<String> iveList = ['μœ μ§„', 'μ›μ˜', 'μ΄μ„œ', '레이', '리즈', '가을'];

  iveList.add('μ£Όλ…˜'); // 리슀트의 끝에 좔가됨

  print(iveList);
}
/Users/junhyuk/flutter/bin/cache/dart-sdk/bin/dart --enable-asserts /Users/junhyuk/Desktop/untitled/lib/main.dart
[μœ μ§„, μ›μ˜, μ΄μ„œ, 레이, 리즈, 가을, μ£Όλ…˜]

Process finished with exit code 0

 

πŸ“˜ where() ν•¨μˆ˜

where() ν•¨μˆ˜λŠ” List에 μžˆλŠ” 값듀을 μˆœμ„œλŒ€λ‘œ μˆœνšŒν•˜λ©΄μ„œ νŠΉμ • 쑰건에 λ§žλŠ” κ°’λ§Œ ν•„ν„°λ§ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜μ— ν•¨μˆ˜λ₯Ό μž…λ ₯ν•΄μ•Όν•˜λ©°, μž…λ ₯된 ν•¨μˆ˜λŠ” κΈ°μ‘΄ 값을 ν•˜λ‚˜μ”© λ§€κ°œλ³€μˆ˜λ‘œ μž…λ ₯λ°›μŠ΅λ‹ˆλ‹€. 각 κ°’λ³„λ‘œ trueλ₯Ό λ°˜ν™˜ν•˜λ©΄ 값을 μœ μ§€ν•˜κ³ , falseλ₯Ό λ°˜ν™˜ν•˜λ©΄ 값을 λ²„λ¦½λ‹ˆλ‹€. μˆœνšŒκ°€ λλ‚˜λ©΄ μœ μ§€λœ 값듀을 기반으둜 μ΄ν„°λŸ¬λΈ”μ΄ λ°˜ν™˜λ©λ‹ˆλ‹€.

 

* μ΄ν„°λŸ¬λΈ”?

- Listλ‚˜ Set λ“±μ˜ μ»¬λ ‰μ…˜ νƒ€μž…λ“€μ΄ μƒμ†λ°›λŠ” 클래슀

- Listλ‚˜ Set 같은 μ»¬λ ‰μ…˜μ΄ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” κΈ°λŠ₯을 μ •μ˜ν•΄λ‘” 클래슀

- where() μ΄λ‚˜ map() λ“± μˆœμ„œκ°€ μžˆλŠ” 값을 λ°˜ν™˜ν•  λ•Œ μ‚¬μš©

 

void main() {

  List<String> iveList = ['μœ μ§„', 'μ›μ˜', 'μ΄μ„œ', '레이', '리즈', '가을'];

  final newList = iveList.where((name) => name == 'μœ μ§„' || name == 'μ›μ˜', );  // 'μœ μ§„' λ˜λŠ” 'μ›μ˜' 만 μœ μ§€

  print(newList);
  print(newList.toList()); // μ΄ν„°λŸ¬λΈ”μ„ 리슀트둜 λ‹€μ‹œ λ°˜ν™˜ν•  λ•Œ toList μ‚¬μš©
}
/Users/junhyuk/flutter/bin/cache/dart-sdk/bin/dart --enable-asserts /Users/junhyuk/Desktop/untitled/lib/main.dart
(μœ μ§„, μ›μ˜)
[μœ μ§„, μ›μ˜]

Process finished with exit code 0

 

πŸ“˜ map() ν•¨μˆ˜

map ν•¨μˆ˜λŠ” List에 μžˆλŠ” 값듀을 μˆœμ„œλŒ€λ‘œ μˆœνšŒν•˜λ©΄μ„œ 값을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜μ— ν•¨μˆ˜λ₯Ό μž…λ ₯ν•΄μ•Ό ν•˜λ©° μž…λ ₯된 ν•¨μˆ˜λŠ” κΈ°μ‘΄ 값을 ν•˜λ‚˜μ”© λ§€κ°œλ³€μˆ˜λ‘œ λ°›μŠ΅λ‹ˆλ‹€. λ°˜ν™˜ν•˜λŠ” 값이 ν˜„μž¬κ°’μ„ λŒ€μ²΄ν•˜λ©° μˆœνšŒκ°€ λλ‚˜λ©΄ μ΄ν„°λŸ¬λΈ”μ΄ λ°˜ν™˜λ©λ‹ˆλ‹€.

void main() {

  List<String> iveList = ['μœ μ§„', 'μ›μ˜', 'μ΄μ„œ', '레이', '리즈', '가을'];

  final newIveList = iveList.map((name) => 'μ•„μ΄λΈŒ $name');  // 리슀트의 λͺ¨λ“  κ°’ μ•žμ— 'μ•„μ΄λΈŒ' μΆ”κ°€

  print(newIveList);

  print(newIveList.toList());
}
(μ•„μ΄λΈŒ μœ μ§„, μ•„μ΄λΈŒ μ›μ˜, μ•„μ΄λΈŒ μ΄μ„œ, μ•„μ΄λΈŒ 레이, μ•„μ΄λΈŒ 리즈, μ•„μ΄λΈŒ 가을)
[μ•„μ΄λΈŒ μœ μ§„, μ•„μ΄λΈŒ μ›μ˜, μ•„μ΄λΈŒ μ΄μ„œ, μ•„μ΄λΈŒ 레이, μ•„μ΄λΈŒ 리즈, μ•„μ΄λΈŒ 가을]

 

λ°˜μ‘ν˜•