Search

๊ธฐ์ดˆ ๋ฌธ๋ฒ•

๊ธฐ์ดˆ ๋ฌธ๋ฒ•

โ€ข
๋ณ€์ˆ˜
โ€ข
ํƒ€์ž…
โ€ข
Null Safety
โ€ข
์ƒ์ˆ˜
โ€ข
์—ฐ์‚ฐ์ž
โ€ข
์ œ์–ด๋ฌธ
โ—ฆ
์กฐ๊ฑด๋ฌธ
โ—ฆ
๋ฐ˜๋ณต๋ฌธ

๋ณ€์ˆ˜

๋ฐ์ดํ„ฐ(๊ฐ’)๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„
Dart์—์„œ๋Š” ๋ณ€์ˆ˜๋ช…์„ ์นด๋ฉœ ์ผ€์ด์Šค(CamelCase)๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ž…๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ์„ ์–ธ

var ๋ณ€์ˆ˜๋ช…;
Dart
๋ณต์‚ฌ

๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”

๋ณ€์ˆ˜๋ช… = ๊ฐ’;
Dart
๋ณต์‚ฌ

๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”

var ๋ณ€์ˆ˜๋ช… = ๊ฐ’;
Dart
๋ณต์‚ฌ

ํƒ€์ž…

๋ฐ์ดํ„ฐ(๊ฐ’)์˜ ํ˜•ํƒœ
์ข…๋ฅ˜
ํƒ€์ž… ํ‚ค์›Œ๋“œ
์„ค๋ช…
์ˆซ์žํ˜•
int
์ •์ˆ˜ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
-
double
๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž(์‹ค์ˆ˜)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
-
num
int, double ์˜ ์ƒ์œ„ ํƒ€์ž…
๋ฌธ์žํ˜•
String
๋ฌธ์ž์—ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋ถˆ๋ฆฌ์–ธ
bool
์ฐธ(true) ๋˜๋Š” ๊ฑฐ์ง“(false) ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์ถ”๋ก ํ˜•
var
๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ดˆ๊ธฐ๊ฐ’์— ๋”ฐ๋ผ ํƒ€์ž…์„ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.
-
dynamic
๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋™์  ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
์ปฌ๋ ‰์…˜
List
์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ(๋ฐฐ์—ด)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
-
Set
์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ๋“ค์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
-
Map
ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋งต(๋”•์…”๋„ˆ๋ฆฌ)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํƒ€์ž… ๊ณ„์ธต

Null Safety

๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด๊ฐ€ null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ null ์ฐธ์กฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ
โ€ข
๋„ ํ—ˆ์šฉ ํƒ€์ž… (Nullable types)
โ€ข
Null ์ฒดํฌ
โ€ข
late ํ‚ค์›Œ๋“œ

๋„ ํ—ˆ์šฉ ํƒ€์ž… (Nullable types)

ํƒ€์ž…? - ํƒ€์ž… ๋’ค์— ? ๋ฅผ ๋ถ™์ด๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด๊ฐ€ null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
int? nullIntNumber; String? nullString;
Dart
๋ณต์‚ฌ
Dart 2.12 ๋ฒ„์ „ ์ดํ›„์—๋Š” ๋„ ์•ˆ์ „์„ฑ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํƒ€์ž… ๋’ค์— ?๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ ํ—ˆ์šฉ ํƒ€์ž…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Null ์ฒดํฌ

nullable ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” null ์ฒดํฌ๋ฅผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
flutter ์—์„œ๋Š” ๋„ ํ—ˆ์šฉ ํƒ€์ž…์„ Null ์ฒดํฌ ํ•˜์ง€ ์•Š๊ณ  ์ ‘๊ทผํ•˜๋ฉด โ€œ์ปดํŒŒ์ผ ์—๋Ÿฌโ€ ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
โ€ข
Null ์ฒดํฌ ์˜ˆ์‹œ
String? name; if (name != null) { print(name.length); // ์•ˆ์ „ํ•˜๊ฒŒ name์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ }
Dart
๋ณต์‚ฌ
โ€ข
?? (null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž): null ๊ฐ’์„ ๋Œ€์ฒดํ•  ๊ธฐ๋ณธ๊ฐ’์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
String? name; String displayName = name ?? 'Guest';
Dart
๋ณต์‚ฌ
โ€ข
?. (null-aware ์ ‘๊ทผ ์—ฐ์‚ฐ์ž): ๊ฐ์ฒด๊ฐ€ null์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
String? name; print(name?.length);
Dart
๋ณต์‚ฌ
โ€ข
??= (null ๋ณ‘ํ•ฉ ํ• ๋‹น ์—ฐ์‚ฐ์ž): ๋ณ€์ˆ˜๊ฐ€ null์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ฐ’์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
String? name; name ??= 'Guest';
Dart
๋ณต์‚ฌ

late ํ‚ค์›Œ๋“œ

late int lateNumber;
Dart
๋ณต์‚ฌ
late ํ‚ค์›Œ๋“œ๋Š” ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋ฅผ ๋‚˜์ค‘์— ํ•˜๊ฒ ๋‹ค๊ณ  ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
โ€ข
๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ†ตํ•ด์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์˜ฌ ๊ฒƒ์ด ํ™•์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ

์ƒ์ˆ˜

const
final
์„ ์–ธ ์‹œ์ 
์ปดํŒŒ์ผ ํƒ€์ž„ ์ƒ์ˆ˜
๋Ÿฐํƒ€์ž„ ์ƒ์ˆ˜
๊ฐ’ ํ• ๋‹น
์„ ์–ธ ์‹œ์—๋งŒ ๊ฐ’ ํ• ๋‹น ๊ฐ€๋Šฅ
์„ ์–ธ ํ›„์— ๊ฐ’ ํ• ๋‹น ๊ฐ€๋Šฅ
ํ• ๋‹น ๊ฐ€๋Šฅ ์—ฌ๋ถ€
์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •๋œ ๊ฐ’๋งŒ ๊ฐ€๋Šฅ
๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •๋œ ๊ฐ’ ํ• ๋‹น ๊ฐ€๋Šฅ
ํ™œ์šฉ ์˜ˆ์‹œ
์ƒ์ˆ˜ ๋ฌธ์ž์—ด, ์ˆซ์ž ๋“ฑ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’ ์‚ฌ์šฉ
์„ค์ • ํ›„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฐ’ ์ง€์ •

์—ฐ์‚ฐ์ž

๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž
์„ค๋ช…
์˜ˆ์‹œ
+
๋”ํ•˜๊ธฐ
a + b
-
๋นผ๊ธฐ
a - b
*
๊ณฑํ•˜๊ธฐ
a * b
/
๋‚˜๋ˆ„๊ธฐ
a / b
%
๋‚˜๋จธ์ง€
a % b
++
์ฆ๊ฐ€
a++ ๋˜๋Š” ++a
--
๊ฐ์†Œ
a-- ๋˜๋Š” --a
+=
๋”ํ•˜๊ณ  ํ• ๋‹น
a += b
-=
๋นผ๊ณ  ํ• ๋‹น
a -= b
*=
๊ณฑํ•˜๊ณ  ํ• ๋‹น
a *= b
/=
๋‚˜๋ˆ„๊ณ  ํ• ๋‹น
a /= b
%=
๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ํ• ๋‹น
a %= b

ํƒ€์ž… ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž
์„ค๋ช…
์˜ˆ์‹œ
as
ํƒ€์ž… ๋ณ€ํ™˜
var x = a as int
is
ํƒ€์ž… ์ฒดํฌ
if (x is int)
is!
ํƒ€์ž…์ด ์•„๋‹Œ์ง€ ์ฒดํฌ
if (x is! String)

Null ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž
์„ค๋ช…
์˜ˆ์‹œ
??
null์ผ ๋•Œ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
var y = x ?? defaultValue
?.
null ์ฒดํฌ ํ›„ ์ ‘๊ทผ
var length = str?.length
??=
null์ผ ๋•Œ๋งŒ ๊ฐ’ ํ• ๋‹น
a ??= b
!
Non-null ๋‹จ์–ธ ์—ฐ์‚ฐ์ž
a!
โ€ข
?? ์—ฐ์‚ฐ์ž๋Š” ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null์ด ์•„๋‹ˆ๋ฉด ์™ผ์ชฝ ๊ฐ’์„, null์ด๋ฉด ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
?. ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์ด null์ด๋ฉด ๋ฌด์‹œํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์— ์ ‘๊ทผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ€ข
??= ์—ฐ์‚ฐ์ž๋Š” ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null์ด๋ฉด ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ์™ผ์ชฝ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์™ผ์ชฝ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ€ข
! ์—ฐ์‚ฐ์ž๋Š” Non-null ๋‹จ์–ธ ์—ฐ์‚ฐ์ž๋กœ, ๋ณ€์ˆ˜๊ฐ€ null์ด ์•„๋‹˜์„ ๋‹จ์–ธํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‹œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, null์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ์–ด๋ฌธ

โ€ข
์กฐ๊ฑด๋ฌธ
โ€ข
๋ฐ˜๋ณต๋ฌธ

์กฐ๊ฑด๋ฌธ

โ€ข
if-else
int x = 10; if (x > 0) { print('์–‘์ˆ˜์ž…๋‹ˆ๋‹ค.'); } else if (x < 0) { print('์Œ์ˆ˜์ž…๋‹ˆ๋‹ค.'); } else { print('0์ž…๋‹ˆ๋‹ค.'); }
Dart
๋ณต์‚ฌ
โ€ข
switch
String fruit = 'apple'; switch (fruit) { case 'apple': print('์‚ฌ๊ณผ์ž…๋‹ˆ๋‹ค.'); break; case 'banana': print('๋ฐ”๋‚˜๋‚˜์ž…๋‹ˆ๋‹ค.'); break; default: print('์•Œ ์ˆ˜ ์—†๋Š” ๊ณผ์ผ์ž…๋‹ˆ๋‹ค.'); }
Dart
๋ณต์‚ฌ

๋ฐ˜๋ณต๋ฌธ

โ€ข
for
for (int i = 1; i <= 5; i++) { print('ํ˜„์žฌ ์ˆซ์ž๋Š” $i์ž…๋‹ˆ๋‹ค.'); }
Dart
๋ณต์‚ฌ
โ€ข
while
int count = 0; while (count < 3) { print('์นด์šดํŠธ: $count'); count++; }
Dart
๋ณต์‚ฌ
โ€ข
do-while
int num = 5; do { print('์ˆซ์ž: $num'); num--; } while (num > 0);
Dart
๋ณต์‚ฌ