Dart

λ³€μˆ˜

μœ ν˜•μ΄ μ•ˆμ „ν•œ Dart μ½”λ“œμ—μ„œλŠ” μœ ν˜•μ„ λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜μ§€ μ•Šκ³  λŒ€λΆ€λΆ„ λ³€μˆ˜λ₯Ό μ„ μ–Έν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. var = 둜 λ³€μˆ˜μ˜ μœ ν˜•μ€ 초기 κ°’μœΌλ‘œ 결정이 λ©λ‹ˆλ‹€.

var name = 'μ •ν™˜'; // μ—¬κΈ°μ„œ μž‘μ€ λ”°μ˜΄ν‘œλ‘œ 지정해쀄것
var birthDay = 5.3;
var teamMembers = ['μ •ν™˜', '범석', 'λ„μ˜'];

μ—¬κΈ°μ„œ λ³€μˆ˜μ˜ μœ ν˜•μœΌλ‘œ name둜 μœ μΆ”λ˜μ§€λ§Œ String ν•΄λ‹Ήμœ ν˜•μ„ μ§€μ •ν•˜μ—¬ λ³€κ²½ν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

String name = 'μ •ν™˜'; // λ¬Έμžμ—΄ λ³€μˆ˜ μ„ μ–Έ
String name = 1000; // Error λ¬Έμžμ—΄ λ³€μˆ˜μ— μ •μˆ˜ν˜• 데이터 ν• λ‹ΉμœΌλ‘œ μ—λŸ¬
int birthDay = 5.3; // Error μ •μˆ˜ν˜• λ³€μˆ˜μ— μ‹€μˆ˜ν˜• 데이터 ν• λ‹ΉμœΌλ‘œ μ—λŸ¬
num birthDay - 5.3; // num은 μžλ£Œν˜•μ€ μ •μˆ˜, μ‹€μˆ˜ λͺ¨λ‘ ν¬ν•¨μœΌλ‘œ λ¬Έμ œμ—†μŒ

Nullable, NonNullable

기본적으둜 int, String 처럼 νƒ€μž…μ„ μ§€μ •ν•œ λ³€μˆ˜λŠ” null이 될수 μ—†λŠ” λ³€μˆ˜μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν•΄λ‹Ήλ³€μˆ˜λ“€λ„ 뒀에 β€˜?’λ₯Ό λΆ™μ΄κ²Œ 돼면 null이 될수 μžˆλŠ” λ³€μˆ˜κ°€ λ©λ‹ˆλ‹€.

String name = null; // Error λ°œμƒ
String? name = null; // μ •μƒμž‘λ™

μƒμˆ˜ μ„ μ–Έν•˜κΈ° μƒμˆ˜λŠ” λ³€μˆ˜μ™€ λ‹€λ₯Έ κ°œλ…μœΌλ‘œ λ³€ν•˜μ§€ μ•ŠλŠ” 값을 μ˜λ―Έν•©λ‹ˆλ‹€.

final, const λͺ…λ Ήμ–΄λ₯Ό μ•žμ— λΆ™μ—¬ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”λ₯Ό κΌ­ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

μƒμˆ˜λŠ” λ³€ν•˜μ§€ μ•ŠλŠ” 값이기 λ•Œλ¬Έμ— μ΄ˆκΈ°ν™” 이후 값을 μˆ˜μ •ν• μˆ˜ μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ‘˜λ‹€ 뒀에 μ–΄λ– ν•œ λ³€μˆ˜ νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ μ΄ˆκΈ°ν™” λ˜λŠ” κ°’μœΌλ‘œ νƒ€μž…μ„ μΆ”λ‘  ν•΄μ£ΌλŠ” νŽΈλ¦¬ν•¨μ€ μžˆμŠ΅λ‹ˆλ‹€.

final String name = 'μ •ν™˜';
final int age = 32;

final, const 차이점

  1. 컴파일 μ‹œμ  μ΄ˆκΈ°ν™”μ—λŠ” λͺ¨λ‘ μ—λŸ¬μ—†μ΄ μ‹€ν–‰λœλ‹€.
  2. λŸ°νƒ€μž„ μ‹œμ  μ΄ˆκΈ°ν™”μ—μ„œλŠ” 값이 κ²°μ •λœ 경우 constλŠ” 지정이 λΆˆκ°€ν•˜λ‹€λŠ” μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€.

constλŠ” μš°λ¦¬κ°€ ν”νžˆ μ‚¬μš©ν•˜λŠ” μƒμˆ˜ λ³€μˆ˜λ‘œ β€˜μ›μ£Όμœ¨, μ΅œλŒ€κ°’, 이름, 타이틀, μœ„μ ―β€™ 등이 많이 μ‚¬μš©λ©λ‹ˆλ‹€.

final은 const경우뿐 μ•„λ‹ˆλΌ, μ§€μ—°μ΄ˆκΈ°ν™”, μΈμŠ€ν„΄μŠ€ λ“± ν•„μš”ν•œ λΆ€λΆ„μ—μ„œ μ‚¬μš©κΈ° κ°€λŠ₯ν•©λ‹ˆλ‹€.

  1. constλŠ” 컴파일 된 ν›„ μ˜€λΈŒμ νŠΈμ—μ„œ ν•„λ“œ μˆ˜μ •μ΄ λΆˆκ°€ν•©λ‹ˆλ‹€.