์๋
ํ์ธ์ CodeGrip์
๋๋ค
Dart ์ธ์ด์ ๋ํด ๊ธ์ ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค ๐ฏ
์๋ฐ์คํฌ๋ฆฝํธ(js), ํ์
์คํฌ๋ฆฝํธ(ts)์ ๋ฌธ๋ฒ์ด ๋น์ทํด์
ํด๋น ์ธ์ด๋ฅผ ์์งํ์ ๋ถ๋ค์ ์ข ๋ ์ฌ์ฐ์ค ๊ฒ๋๋ค ._.
๋ํ, ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ(OOP)์ ๋ํ ๊ฐ๋
์ด ์์ผ์๋ค๋ฉด
์ด๋ ค์ด ๋ด์ฉ๋ ์ ์ดํดํ์ค ์ ์์๊ฒ๋๋ค :)
Dart ๊ฐ๋ฐ ํ๊ฒฝ
๋ณ๋์ ํคํธ ์ค์น๋ ํ๊ฒฝ ์ธํ
์์ด๋
Dart ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ ํ๋ฅญํ ์น๊ตฌ๊ฐ ์์ต๋๋ค :)
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. ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค :)
๊ฐ์ฌํฉ๋๋ค~