hani_verse :: aim_higher
article thumbnail

์•ˆ๋…•ํ•˜์„ธ์š” CodeGrip์ž…๋‹ˆ๋‹ค
Dart ์–ธ์–ด์— ๋Œ€ํ•ด ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐ŸŽฏ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(js), ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ(ts)์™€ ๋ฌธ๋ฒ•์ด ๋น„์Šทํ•ด์„œ
ํ•ด๋‹น ์–ธ์–ด๋ฅผ ์ˆ™์ง€ํ•˜์‹  ๋ถ„๋“ค์€ ์ข€ ๋” ์‰ฌ์šฐ์‹ค ๊ฒ๋‹ˆ๋‹ค ._.

๋˜ํ•œ, ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด
์–ด๋ ค์šด ๋‚ด์šฉ๋„ ์ž˜ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์„๊ฒ๋‹ˆ๋‹ค :)


Dart ๊ฐœ๋ฐœ ํ™˜๊ฒฝ


๋ณ„๋„์˜ ํ‚คํŠธ ์„ค์น˜๋‚˜ ํ™˜๊ฒฝ ์„ธํŒ… ์—†์ด๋„
Dart ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ์นœ๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค :)

https://dartpad.dev/

 

DartPad

 

dartpad.dev

 

DartPad๋ฅผ ์ผœ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐœ์˜ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ์„๊ฑฐ์—์š”

์ขŒ์ธก์€ ์ €ํฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๊ฒŒ๋ , Dart์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณณ์ด์—์š”
์šฐ์ธก ์ƒ๋‹จ์€ ์ฝ˜์†”์ฐฝ์œผ๋กœ, ์ถœ๋ ฅ๊ฐ’์ด ๋‚˜์˜ค๊ฑฐ๋‚˜ ์ž…๋ ฅ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”
์šฐ์ธก ํ•˜๋‹จ์€ ๋ฌธ์„œ์ฐฝ์œผ๋กœ, ์ฝ”๋“œ์— ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ–๋‹ค๋Œ€๋ฉด ํƒ€์ž…๊ณผ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์ด ๋‚˜์˜ต๋‹ˆ๋‹ค

 

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํ–‰์‹œํ‚ฌ ์ฝ”๋“œ๋Š” main ํ•จ์ˆ˜ ์•ˆ์— ์ž‘์„ฑํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค
์˜ˆ์‹œ๋กœ ๋ณด์—ฌ๋“œ๋ฆฌ๋Š” ์ฝ”๋“œ๋ธ”๋ก์—๋Š” ํŽธ์˜์ƒ void main(){}์„ ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)
DartPad๋ฅผ ์ž„๋ฒ ๋”ฉ ํ•˜์˜€์œผ๋‹ˆ, ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค >_<

์ถœ๋ ฅํ•˜๊ธฐ

print('Hello World!');

ํŒŒ์ด์ฌ์ฒ˜๋Ÿผ print( ) ์•ˆ์— ์ถœ๋ ฅํ•  ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค :)
๋‹จ ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ์žŠ์œผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค ._.

 

(์•„๋ž˜ DartPad๊ฐ€ ์ž‘๋™ํ•˜์‹œ์ง€ ์•Š๋Š” ๋ถ„์€ ์• ๋“œ๋ธ”๋ฝ์„ ๋น„ํ™œ์„ฑํ™” ์‹œ์ผœ์ฃผ์„ธ์š”...!)

 


ํƒ€์ž…

๊ธฐ๋ณธ ํƒ€์ž…

// var : ์ž๋™์œผ๋กœ ํƒ€์ž… ์ง€์ •
var name1 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

// int, double, bool, String ํƒ€์ž…
int number1 = 5;
double number2 = 5.0;
bool flag = true;
String name2 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฒ˜๋Ÿผ varํƒ€์ž…์„ ์“ฐ๋ฉด ์ž๋™์œผ๋กœ ํƒ€์ž… ์ง€์ •์ด ๋ฉ๋‹ˆ๋‹ค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” var, let ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž… ๋ช…์‹œ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฐ˜๋ฉด,
๋‹คํŠธ๋Š” int, double, bool, String ํƒ€์ž…๊ณผ ๊ฐ™์ด ํƒ€์ž… ๋ช…์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค...!!

๋ฐ˜๋ฉด, ๋ฌธ์ž์—ด ํƒ€์ž…์ธ String์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋‹ˆ ์ž‘์„ฑํ•  ๋•Œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก ํ•ด์š” ._.


ํƒ€์ž… ํ™•์ธ

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ€์ˆ˜ ์„ ์–ธ(์ดˆ๊ธฐํ™”) ์‹œ์—๋Š” ํƒ€์ž…์„ ์ž‘์„ฑํ•˜๋Š”๋ฐ, ๋‚˜์ค‘์— ์ด ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ๊ถ๊ธˆํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

name1.runtimeType

์œ„์™€ ๊ฐ™์ด dot operator(.)๋กœ runtimeType์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์ค์‹œ๋‹ค

๊ทธ๋Ÿฌ๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ์ถœ๋ ฅ๋  ๊ฒ๋‹ˆ๋‹ค ._.


๋‹ค์ด๋‚˜๋ฏน ํƒ€์ž…
(์„ ํƒ์‚ฌํ•ญ)
ํ•œ ๋ฐœ์ž๊ตญ๋งŒ ๋” ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค
๊ธฐ์กด์— varํƒ€์ž…์€ ์ž๋™์œผ๋กœ ํƒ€์ž… ์ง€์ •์ด ๋œ๋‹ค๊ณ  ๋ง์”€๋“œ๋ ธ์—ˆ์ฃ 
๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด "์„ ์–ธ๊ณผ ๋Œ€์ž…์˜ ํƒ€์ž… ๋ถˆ์ผ์น˜"๊ฐ€ ๊ฐ€๋Šฅํ• ์ง€ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค

// ๋ณ€์ˆ˜ ์„ ์–ธ: String ํƒ€์ž…
var name1 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

// ๋ณ€์ˆ˜ ๋Œ€์ž…: int ํƒ€์ž…
name1 = 5;

ํ•ด๋ณด์…จ๋‚˜์š”? ์•ˆํƒ€๊น๊ฒŒ๋„ var ํƒ€์ž…์€ ์ตœ์ดˆ์— ์„ ์–ธํ•˜๋ฉด ํ•ด๋‹น ํƒ€์ž…์œผ๋กœ ๊ณ ์ •(fix) ๋ฉ๋‹ˆ๋‹ค
์ด๋Ÿฌํ•œ varํƒ€์ž… ๋ณด๋‹ค ๋” ์œ ๋™์ ์ธ ํƒ€์ž…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๋‹ค์ด๋‚˜๋ฏน ํƒ€์ž…์ธ๋ฐ์š”

// ๋ณ€์ˆ˜ ์„ ์–ธ: String ํƒ€์ž…
dynamic name1 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

// ๋ณ€์ˆ˜ ๋Œ€์ž…: int ํƒ€์ž…
dynamic number = 5;

String ํƒ€์ž…์ด์˜€๋˜ name1์— 5๋ฅผ ๋Œ€์ž…ํ•˜์˜€๋”๋‹ˆ, ํƒ€์ž…์ด ๋‹ค์ด๋‚˜๋ฏนํ•˜๊ฒŒ ๋ณ€ํ•˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์ด๋ ‡๊ฒŒ ๊ด€๋Œ€ํ•˜๊ฒŒ ํ—ˆ์šฉํ•ด์ฃผ๋Š” var, dynamic์„ ์ข‹์•„ํ•˜์‹œ๋Š” ๋ถ„๋„ ๊ณ„์‹ค ์ˆ˜ ์žˆ๋Š”๋ฐ์š”
์‹ค์ œ๋กœ๋Š” ์—„๊ฒฉํ•˜๊ฒŒ ํƒ€์ž…์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ์ข‹์Šต๋‹ˆ๋‹ค
ํƒ€์ž… ๋ถˆ์ผ์น˜๋Š” ๊ณง์ž˜ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋กœ ์ด์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ฑฐ๋“ ์š”.. ใ… _ใ… 

 

 

 


NULL

null์€ ๊น๋‘๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ์ข‹์•„์š”. ๋ฒฝ์„ ๋šซ๊ณ  ๋‹ค๋‹ˆ๋Š” ์œ ๋ น๐Ÿ‘ป๊ฐ™์€ ์กด์žฌ์ž…๋‹ˆ๋‹ค..
์–ด๋–ค ๋ณ€์ˆ˜๊ฐ€ nullableํ•˜๋‹ค๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ์•„๋‹Œ null์ด๋ผ๋Š” ๊ฐ’์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์–ด์š”..!!

์•Œ์•„๋‘์…”์•ผ ํ•  ๊ฒƒ์ด, Dart 2.12๋ฒ„์ „๋ถ€ํ„ฐ null safety๐Ÿ”’ ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๋”ฐ๋ผ์„œ ๋ชจ๋“  ํƒ€์ž…์ด non-nullable๋กœ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค

๊ทธ๋ž˜๋„ ์ €ํฌ๋Š” null์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ๊ฒ ์ฃ ?

nullable

// String ํƒ€์ž… ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ nullableํ™”
String? name3 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

// String ํƒ€์ž… ๋ณ€์ˆ˜์— null ๋Œ€์ž…
name3 = null;

์œ„์™€ ๊ฐ™์ด ํƒ€์ž…๋ช… ๋’ค์— ?์„ ๋ถ™์ด๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” null์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋Š” nullable ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค


non-nullable

// String ํƒ€์ž… ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ nullableํ™”
String! name4 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

// String ํƒ€์ž… ๋ณ€์ˆ˜์— null ๋Œ€์ž…ํ–ˆ์ง€๋งŒ... ๋ ๊นŒ?
name4 = null;

๋ฐ˜๋Œ€๋กœ ํƒ€์ž…๋ช… ๋’ค์— !์„ ๋ถ™์ด๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” null์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์—†๋Š” non-nullable ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค
๊ฐœ์ธ์ ์œผ๋กœ null์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ์‹ซ์–ดํ•˜๋Š”์ง€๋ผ, dart์˜ null-safety์ •์ฑ…์€ ๋งค์šฐ ํ™˜์˜ํ• ๋งŒ ํ•˜๋„ค์š” :)

 

null ์ฒ˜๋ฆฌ

// null์ด๋ฉด ์šฐ์ธก ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด๋ผ
number ??= 5.0;

๋ณ€์ˆ˜๊ฐ€ null๊ฐ’์ด๋ผ๋ฉด =๊ธฐํ˜ธ ์ขŒ์ธก์— ??๋ฅผ ๋ถ™์—ฌ์„œ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ._.


์ƒ์ˆ˜ํ™”

๋ณ€์ˆ˜ ์„ ์–ธ(์ดˆ๊ธฐํ™”)ํ•˜๊ณ  ์•ž์œผ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—” ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”?

๊ทธ๋Ÿด๋•Œ ์ €ํฌ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ์•ž์— final, const์„ ๋ถ™์—ฌ ์ƒ์ˆ˜ํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”!

// final๋กœ ์ƒ์ˆ˜ํ™”
final String name1 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

// const๋กœ ์ƒ์ˆ˜ํ™”
const String name2 = '์ฝ”๋“œ๊ทธ๋ฆฝ';

๊ทธ๋ ‡๋‹ค๋ฉด final๊ณผ const ๊ธฐ๋Šฅ์ด ๋˜‘๊ฐ™์€๋ฐ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹œ์ง€ ์•Š๋‚˜์š”?

final์€ const์™€ ๋‹ฌ๋ฆฌ ๋นŒ๋“œ ํƒ€์ž„์„ ์•Œ๊ณ  ์žˆ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค
๋ฐ˜๋ฉด, const๋Š” ์–ธ์ œ ์‹คํ–‰ํ• ์ง€ ์ •ํ™•ํ•œ ์‹œ๊ฐ„์„ ์•Œ์•„์•ผ ํ•˜๋ฏ€๋กœ ๋นŒ๋“œ ํƒ€์ž„์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค

final์ด const์— ๋น„ํ•ด ๋” ์œ ์—ฐํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š” ._.

 

tmi) final, const ๋’ค์˜ ํƒ€์ž…์„ ์ƒ๋žตํ•˜๋ฉด ์ž๋™์œผ๋กœ varํƒ€์ž…์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค

 


์ด๋ ‡๊ฒŒ 'Dart - 01. ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ํŒŒ์•…ํ•˜๊ธฐ' ๋ฅผ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Dart๋ฅผ ํ•™์Šตํ•˜๋Š”๋ฐ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ๊ฐ•์˜๋Š” Dart - 02. ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค :)

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~

profile

hani_verse :: aim_higher

@aim_higher

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!