๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Dart] ๋ณ€์ˆ˜์™€ ๋ฐ์ดํ„ฐํƒ€์ž…(var, final, const, dynamic) ๋ณธ๋ฌธ

๐Ÿ“ฑFlutter/Dart

[Dart] ๋ณ€์ˆ˜์™€ ๋ฐ์ดํ„ฐํƒ€์ž…(var, final, const, dynamic)

๋ฃจ๋ฆฌ์•ผใ…‘ 2024. 12. 17. 20:12
๋ฐ˜์‘ํ˜•

Dart ์–ธ์–ด์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ var, final, const, dynamic ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๋ณ€์ˆ˜ ์„ ์–ธ(var)

Dart์—์„œ var๋Š” ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ž๋™์œผ๋กœ ์ถ”๋ก ํ•ด์ค€๋‹ค.

void main() {
  var name = "ํ™๊ธธ๋™"; // ๋ฌธ์ž์—ด
  var age = 25;       // ์ •์ˆ˜
  print('์ด๋ฆ„: $name, ๋‚˜์ด: $age');
}

๋˜ํ•œ, ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ช…์‹œํ•˜๋ฉฐ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

void main() {
  String name = "ํ™๊ธธ๋™";
  int age = 25;
  double height = 175.5;
  bool isStudent = true;

  print('์ด๋ฆ„: $name, ๋‚˜์ด: $age, ํ‚ค: $height, ํ•™์ƒ ์—ฌ๋ถ€: $isStudent');
}
ํƒ€์ž… ์„ค๋ช… ์˜ˆ์‹œ
int ์ •์ˆ˜ 25, -10
double ์‹ค์ˆ˜ 3.14, -2.5
String ๋ฌธ์ž์—ด "Hello", 'Dart'
bool ๋ถˆ๋ฆฌ์–ธ(์ฐธ/๊ฑฐ์ง“) true, false
var ํƒ€์ž… ์ž๋™ ์ถ”๋ก  var name = "ํ™๊ธธ๋™"

 

2. final๊ณผ const

final๊ณผ const๋Š” ๋ถˆ๋ณ€(Immutable) ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

final

final์€ ํ•œ๋ฒˆ ํ• ๋‹นํ•˜๋ฉด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ์ค‘์ธ '๋Ÿฐํƒ€์ž„'์— ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

void main() {
  final time = DateTime.now(); // ์‹คํ–‰ ์‹œ์ ์— ํ˜„์žฌ ์‹œ๊ฐ„ ๊ฐ’์ด ํ• ๋‹น๋จ.
  print(time);

  // time = DateTime.now(); // ์˜ค๋ฅ˜: final ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋‹ค์‹œ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Œ.
}

const

const๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
์ฆ‰, ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฐ’์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ.

์ด๋Ÿฌํ•œ ํŠน์ง•์ด ์žˆ๋Š” const๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ณ€์ˆ˜๊ฐ€ ์ƒ์ˆ˜์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ๋” ํšจ์œจ์ ์ด๋‹ค.

void main() {
  const pi = 3.14; // ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฐ’์ด ๊ฒฐ์ •๋จ.
  print(pi);

  // const time = DateTime.now(); // ์˜ค๋ฅ˜: const๋Š” ๋Ÿฐํƒ€์ž„ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ.
}

 

ํŠน์ง• final const
๊ฐ’ ํ• ๋‹น ์‹œ์  ๋Ÿฐํƒ€์ž„ (์‹คํ–‰ ์ค‘์— ๊ฐ’ ๊ฒฐ์ •) ์ปดํŒŒ์ผ ํƒ€์ž„ (์‹คํ–‰ ์ „์— ๊ฐ’ ๊ฒฐ์ •)
ํ• ๋‹น ๊ฐ€๋Šฅ ๊ฐ’ ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •๋˜๋Š” ๊ฐ’๋„ ๊ฐ€๋Šฅ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ • ๊ฐ€๋Šฅํ•œ ๊ฐ’๋งŒ ๊ฐ€๋Šฅ
๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ ๋ฒˆ๋งŒ ํ• ๋‹น (์ƒ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘)
์‚ฌ์šฉ ์˜ˆ์‹œ DateTime.now()  3.14, "Hello" ๋“ฑ ์ƒ์ˆ˜ ๊ฐ’

 

3. dymamic ๋ณ€์ˆ˜ ์„ ์–ธ

dynamic ํ‚ค์›Œ๋“œ๋Š” ํƒ€์ž…์ด ๋™์ ์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜์ด๋‹ค.
๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๊ณ ์ •๋˜์ง€ ์•Š์•„ var ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ ํƒ€์ž„์— ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์•„ ์œ ์—ฐํ•˜์ง€๋งŒ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทผ๋ฐ, JSON ๋ฐ์ดํ„ฐ ์ฒ˜๋Ÿผ ํƒ€์ž…์ด ๋ถˆ๋ช…ํ™•ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์œ ์šฉํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.

void main() {
  dynamic value = "Hello"; // ๋ฌธ์ž์—ด ํ• ๋‹น
  print(value);            // ์ถœ๋ ฅ: Hello

  value = 123;             // ์ •์ˆ˜๋กœ ๋ณ€๊ฒฝ
  print(value);            // ์ถœ๋ ฅ: 123

  value = true;            // ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋ณ€๊ฒฝ
  print(value);            // ์ถœ๋ ฅ: true
}

 

๋ฐ˜์‘ํ˜•