Related to: Dart

개요

플러터라는 Framework에 평소 관심이 있었고, 배우고 싶다고 생각하고 있었습니다.
AI Engineer로 취업도 잘 안되고 있어서 분노의(?) 스터디를 시작합니다.

Dart Pad 실행하기

개발환경에 안드로이드 스튜디오가 있다면 상관이 없지만, 그렇지 않은 분들은 Dart 하나를 위해 환경를 꾸리는 것이 부담스러울 수 있습니다.

이 때, Google에 DartPad라고 검색하면 Web형 IDE를 쓸 수 있습니다.

https://dartpad.dev/

  • 알아두면 좋은 단축키
    • ctrl + x : 줄 삭제
    • ctrl + enter : compile

Dart 변수 선언

Dart에서는 ‘var’ 키워드로 변수를 선언합니다.

void main() {
  var x = "hello world!";
  print(x);
}

물론 기존 C++, C#과 같이 자료형을 직접 표기할 수도 있습니다.

void main(){
	int number = 2;
}

기본적인 사칙연산을 모두 지원합니다.( + - * / )
또한 print에 바로 넣을 수 있는 것으로 보아, 내부적으로 String변환 메서드를 갖고 있는거 같습니다.

void main(){
	int number1 = 1;
	int number2 = 2;
	print(number1 + number2)
}
  • Dart Built-in types[link]

    Untitled 52.png

  • Object Class

    • C# 과 마찬가지로, 모든 객체는 Object를 상속합니다.
      따라서 아래 표현이 가능합니다.
    Object balance = 1000;

Dart 상수 선언

상수는 ‘final’ 또는 ‘const’ 키워드를 사용하여 선언할 수 있습니다. final로 선언한 경우, 변경이 불가능합니다.

final int PRICE = 1000;
PRICE = 2000; // ERROR!

상수 선언의 경우, 아래와 같이 type 선언을 생략할 수 있습니다.

final PRICE = 1000;

‘final’과 ‘const’의 차이는 build-time에 값을 알 수 있는지의 여부입니다.
DateTime.now()의 경우, 해당 구문이 실행될 때의 현재 시간을 반환하므로 build 하는 시점에서는 값을 알 수 없습니다.

fianl now1 = DateTime.now();
 
const now2 = DateTime.now(); // ERROR!

Nullable 선언

자료형 뒤에 ‘?’를 붙여서 nullable type을 선언할 수 있습니다.

nullable인 경우, ‘??=’ operator를 사용할 수 있습니다. 좌항의 변수가 null인 경우 우항의 값을 대입합니다.

double? number = null
number ??= 3.0

Map

원하는 type으로 dictionary를 만들 수 있습니다.

Map<String, String> dictionary = {
	'a': '1234',
	'b': 'a134',
	'c': '3423',
};
dictionary['d'] = '223123' // add new item

조건문

if문 사용법은 아래와 같습니다.

if(number % 3 == 0)
{
	print('나머지는 0');
}
else if(number % 3 == 1)
{
	print('나머지는 1');
}
else
{
	print('나머지는 0');
}

switch문 사용법은 아래와 같습니다.
break와 default가 있어야 한다는 점에서 사용 방식은 C++, C#과 유사합니다.

switch(number % e){
	case 0:
		print('나머지는 0');
		break;
	case 1:
		print('나머지는 1');
		break;
	default:
		print('나머지는 2');
		break;
}

반복문

For Loop 사용방식은 아래와 같습니다.

for(int i = 0; i < 30; i++)
{
	//some code
}
List<int> numbers = [1,2,3,4];
for(var number in numbers
{
	//some code
}

while 및 do-while의 사용방식은 아래와 같습니다.

int total = 0;
while(total<10){
	//some code
}
do{
	//some code
}while(total>0)

Enum 선언

아래와 같이 enum을 선언할 수 있습니다.

enum Status{
	approved,
	pending,
	rejected,
}

함수 선언

함수 선언 방식은 다음과 같습니다.
중괄호를 사용하여 optional parameter를 선언할 수 있습니다.

addNumbers(int x, int y, int z, [int? a, int b=2]){
	// some code
	return x + y + z
}

아래 방법으로 named parameter를 선언할 수 있습니다. named parameter로 선언되면 명시적으로 parameter 이름을 입력해야 합니다. ‘requred’ 키워드를 넣어야 하며, 없다면 optional parameter로 취급됩니다.

addNumbers({
	required int x,
	required int y,
	required int z,
  int a=3,
  int b=9,
}){
	//some code
}
 
addNumbers(x:11, y:2, z:23)
addNumbers(y:1, x:202, z:3)
addNumbers(1,202,3) // ERROR!

Method Return Type

void는 리턴타입이 없는 Method를 의미하며 생략할 수 있습니다.
int형 변수를 반환하고 싶을 경우, int를 입력합니다

void simplePrint(String word){
	print(word)
}
 
simplePrint(String word){
	print(word)
}
 
int simpleSum(int a, int b){
	return a+b
}

Arrow Method

간단한 메서드일 경우, 더 간단하게 표현할 수 있습니다.

int add(int a, int b) => a+b;

Typedef

메서드 Delegate를 만들 수 있습니다.

typedef custom_op = int Function(int x, int y, int z);
int add(int x, int y, int z) => x + y + z;
int subtract(int x, int y, int z) => x - y - z;
 
custom_op op = add
int result = op(1,2,3); // 6
op = subtract
result = op(1,2,3) // -4

참조

[코드팩토리] [입문] Dart 언어 4시간만에 완전정복 - 인프런 | 강의

이 강의를 통해 Dart 언어를 배우면 Flutter를 시작할 수 있을 정도의 수준으로의 업그레이드가 가능합니다!
https://www.inflearn.com/course/dart-언어-입문/dashboard

https://brunch.co.kr/@mystoryg/118