Frontend ๐Ÿ“š/Flutter

[Dart] Dart ๊ธฐ๋ณธ ๋ฌธ๋ฒ•_(1)

leejaejae 2022. 2. 11. 15:54

1. Dart ์–ธ์–ด ์—ฐ์Šต ํ™˜๊ฒฝ

  • dartpad ์‚ฌ์šฉ
  • dart ๋ฌธ๋ฒ• main ํ•จ์ˆ˜๊ฐ€ ์ง„์ž…์ ์ž„


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

1) ์ฃผ์„

  • // : ํ•œ ์ค„ ์ฃผ์„
  • /* ... */ : ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„
  • /// : ๋ฌธ์„œ ์ฃผ์„

2) ๋ฌธ์žฅ: ๋์— ์ƒˆ๋ฏธ์ฝœ๋ก (;)
3) ๋ณ€์ˆ˜

  • ๊ธฐ๋ณธ ํƒ€์ž…: int, double, String, bool
  • num: int์™€ double ํฌํ•จ
  • ์ž๋™ ํ˜•๋ณ€ํ™˜ ์ง€์›x

4) ํƒ€์ž… ์ถ”๋ก 

  • var: ํƒ€์ž…์„ ์ง์ ‘ ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ  var๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Œ
var i = 10; //int ํƒ€์ž…
var s = 'hi'; //๋ฌธ์ž์—ด ํƒ€์ž…

5) ์ƒ์ˆ˜ final, const

  • final: ๊ฐ’์ด ์ˆ˜์ •๋˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ -> ํƒ€์ž… ์ƒ๋žต๋„ ๊ฐ€๋Šฅ
final String name = 'jaejae';
name = '์Šน์žฌ'; //error

final name = 'jaejae';

6) ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž: +, -, *, /, ~/(๋ชซ), %

  • assert(): ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ์ง€ ๊ณ„์‚ฐ -> dartpad.dev ์›น์—์„œ๋Š” ๋™์ž‘x
assert(2 + 3 == 5); // true

7) ์ฆ๊ฐ ์—ฐ์‚ฐ์ž

  • ํ›„์œ„: ์‹[++], ์‹[--]
  • ์ „์œ„: [++]์‹, [--]์‹

8) ๋น„๊ต ์—ฐ์‚ฐ์ž: ==, !=, >, <, >=, <=
9) ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž: &&, ||, ==, !(๋ถ€์ •), !=(๋‹ค๋ฅด๋‹ค)
10) ํƒ€์ž… ๊ฒ€์‚ฌ(is, is!)

  • is: ๊ฐ™์€ ํƒ€์ž…์ด๋ฉด true
  • is!: ๋‹ค๋ฅธ ํƒ€์ž…์ด๋ฉด ture
int a = 10;
if (a is int){
print('์ •์ˆ˜');
}
>>> ์ •์ˆ˜

String text = 'hello';
if (text is! int){
print('์ˆซ์ž๊ฐ€ ์•„๋‹˜');
}
>>> ์ˆซ์ž๊ฐ€ ์•„๋‹˜

11) ํ˜•๋ณ€ํ™˜(as)

  • as: ๋‹ค๋ฅธ ํƒ€์ž…๋ผ๋ฆฌ๋Š” ๋ณ€ํ™˜์ด ์•ˆ๋˜๊ณ  ๋” ์ƒ์œ„ ๊ฐœ๋…์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ


3. ํ•จ์ˆ˜(function)

1) ํ•จ์ˆ˜ ํ˜•ํƒœ

  • ๋ฐ˜ํ™˜๊ฐ’O, ๋งค๊ฐœ๋ณ€์ˆ˜O
int f(int x){
return x+10;
}
  • ๋ฐ˜ํ™˜๊ฐ’O, ๋งค๊ฐœ๋ณ€์ˆ˜X
String f(){
return '์•ˆ๋…•';
}
  • ๋ฐ˜ํ™˜๊ฐ’X, ๋งค๊ฐœ๋ณ€์ˆ˜O
void f(int x){
print(x);
}

2) ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ

  • ๋ฉ”์„œ๋“œ: ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ž‘์„ฑํ•˜๋Š” ํ•จ์ˆ˜
  • static: ์ •์  ๋งค์†Œ๋“œ -> ์ตœ์ƒ์œ„ ํ•จ์ˆ˜(ํด๋ž˜์Šค ์™ธ๋ถ€ ํ•จ์ˆ˜)์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

3) ์ต๋ช… ํ•จ์ˆ˜

([์ธ์ˆ˜๋ช…]){ [๋™์ž‘ ๋˜๋Š” ๋ฐ˜ํ™˜๊ฐ’] }
(number) {
return number % 2 == 0;
};

4) ๋žŒ๋‹ค์‹

([์ธ์ˆ˜๋ช…]) => [๋™์ž‘ ๋˜๋Š” ๋ฐ˜ํ™˜๊ฐ’]
(number) => number % 2 == 0;

5) ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜

  • {}๋กœ ๊ฐ์‹ธ ์‚ฌ์šฉ, ํ˜ธ์ถœํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ช…์„ ๊ฐ’ ์•ž์— ์จ์ฃผ๋ฉด ๋จ
  • ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์„ ํƒ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ๊ฐ’ ์ง€์ • ๊ฐ€๋Šฅ
void something(String name, {int age = 10}) {}

void main(){
something('jae', age: 10); // jae, 10
something('jae'); // jae, 10


4. ๋ถ„๊ธฐ์™€ ๋ฐ˜๋ณต

1) if else

  • ๋งŒ์•ฝ ์กฐ๊ฑด์ด ์ฐธ์ด๋ผ๋ฉด A๋ฅผ ํ•˜๋ผ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด B๋ฅผ ํ•˜๋ผ
String text = 'jae';

if (text is int) {
print('์ •์ˆ˜');
} else if (text is double) {
print('์‹ค์ˆ˜');
} else {
print('์ •์ˆ˜๋„ ์‹ค์ˆ˜๋„ ์•„๋‹ˆ๋‹ค');
}

2) ์‚ผํ•ญ ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•œ ๋ถ„๊ธฐ

[์กฐ๊ฑด] ? [์ฐธ์ผ ๋•Œ] : [๊ฑฐ์ง“์ผ ๋•Œ]
var todo = isRainy ? '๋นจ๋ž˜๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค' : '๋นจ๋ž˜๋ฅผ ํ•œ๋‹ค';

3) swith case

  • ์กฐ๊ฑด์ด ๋งž๋Š” ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ ์œ ์šฉํ•œ ๋ฌธ๋ฒ•
  • ํŠนํžˆ, ์—ด๊ฑฐ(num) ํƒ€์ž…๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋Š” ๊ฐ•์ œ์„ฑ ์ƒ๊น€ -> ์ธ๊ฐ„์˜ ์‹ค์ˆ˜ ๋ฐฉ์ง€(if ๋ฌธ๋ณด๋‹ค ์œ ์šฉ)

4) for

for( int i = 0; i < 5; i++){
...
}