YYYEJI

[DART] 다트 언어 기초 문법 1 본문

Dart

[DART] 다트 언어 기초 문법 1

YEJI ⍢ 2022. 8. 2. 16:54
728x90

다트(Dart) 언어란  ? ? ?

구글이 멀티 플랫폼 상에서 동작되도록 하는 앱을 위해 디자인한 프로그래밍 언어입니다.

 

 

다트 언어를 사용하기 위해서는 개발 환경을 설치해야 되지만 

우선 연습을 위해 다트 코드를 실행할 수 있는 다트패드 웹사이트를 활용해 보겠습니다 !

↓↓↓ 아래 링크로 들어가면 사용하실 수 있습니다 ↓↓↓

https://dart.dev/#try-dart

 

Dart programming language

Dart is a client-optimized language for fast apps on any platform

dart.dev

 

 

다트 문법은 main() 함수가 진입점(Entry Point)입니다.

Run을 누르시면 코드가 실행이 됨.

 

 

주석

다트 언어의 주석은 3종류가 있습니다.

//            한 줄 주석
/*    */      여러줄 주석
///           문서 주석, 메서드나 클래스 정의 위에 작성하면 dartdoc과 같은 문서 생성 도구를 통해 문서를 자동으로 생성해줌.

왼쪽은 실행 코드, 오른쪽은 실행 화면

주석을 모르시는 분들을 위해 설명을 좀 더 하자면,

주석은 코드에 달아두는 설명으로 실행에 영향을 주지 않습니다.

 

위 사진을 보면 주석을 달은 코드는 코드 실행에 영향을 주지 않음을 확인할 수 있습니다.

 

 

 

문장(Statement)은 명령 단위로 문장 끝에 세미콜론(;)을 단드시 붙여줘야 됩니다.

 

변수

다음으로 변수를 살펴보도록 하겠습니다.

변수는 데이터(값)를 담는 상자로 변수의 종류를 지정해줘야 되는데

숫자 또는 문자열 등 기본 변수 타입은 제공을 하며,

사용자가 집접 타입을 정의할 수도 있습니다.

 

int → 정수형

double → 실수형

String → 문자열

bool→ True/False

 

변수에 값을 할당할 때는 '=' 기호로 값을 할당합니다.

 

여기서 int 타입과 double 타입은 num 타입에 포함이 됩니다.

void main(){
	int a = 1;
	double b = 1.0;
    
	num c = 1;
	num d = 1.0;
}

즉, int/double 타입을 사용할 때 num 타입을 사용해도 Error가 뜨지 않습니다.

 

 

자료형이 달라도 자동적으로 자료형을 변환해주는 Implicit Casting 기능이 자바에는 지원이 되지만,

다트 언어에는 지원이 안된다고 합니다. ×◠×

int type의 값을 double type으로 선언된 변수에 넣으려고 하니까 에러가 뜨는 것을 볼 수 있음.

반면에 num 타입을 사용하게 되면 int 타입과 double 타입을 모두 대입할 수 있기 때문에 num 타입을 사용하는게 편하겠죠 ?

 

 

타입추론

다트 언어에서는 타입 추론 기능을 지원해줍니다.

위에서 했던 것처럼 변수를 선언할 때 타입을 지정해 주는 방식이 아니라,

타입을 직접 명시하지 않고 var로 대체할 수 있는 기능입니다.

 

runtimeType 메소드를 사용하면 변수의 타입을 출력해줍니다.

 

String에 대해서 더 자세히 알아봅시다 !

변수에 담긴 값은 언제라도 다른 값을 재할당할 수 있습니다.

그치만 선언된 변수 앞에 Final or Const 키워드가붙으면 값을 재할당할 수 없게 됩니다.

또한 final or const 키워드가 붙게 되면 타입을 생략할 수 있습니다.

값이 변하지 않은 변수에 붙여주는 것이 좋겠죠 ᐛ / ?

 

그렇다면 final 과 const의 차이점은 무엇일까요 ? ? ?

final - build time의 값을 몰라도 사용 가능

const - build time의 값을 알아야 사용 가능

 

(build time - run을 누르고 코드가 2진수로 바뀌는 시간)

 

DateTime

Run 버튼을 누르고 코드가 실행되는 순간의 날짜와 시간을 변수에 저장할 수 있음.

 

산술 연산자

+ , -

* (곱하기)

/ (나누기,) → double 타입 반환

~/ (몫) → int 타입 반환

% (나머지) → int 타입 반환

 

+=  → 변수의 값과 오른쪽의 값을 더해서 변수에 넣으라는 의미

-=  →  변수의 값과 오른쪽의 값을 빼서 변수에 넣으라는 의미

*=  →  변수의 값과 오른쪽의 값을 곱해서 변수에 넣으라는 의미

/=  →  변수의 값과 오른쪽의 값을 나눠서 변수에 넣으라는 의미

??=  → 변수의 값이 null 이면 오른쪽 값을 변수에 넣으라는 의미

 

 

assert() - 계산 결과가 참인지 검사하는 함수

아래 함수처럼 사용하면 되는데 우리가 사용하고 있는 dartpad.dev 웹에서는 결과가 뜨지 않습니다. 

가장 아래 코드의 '+'는 문자열을 합치는 기능도 있음.

 

 

증감 연산자 - 값을 1씩 증가/감소시키는 연산자

후위 연산: a++ / a--  (나중에 증감)

전위 연산: ++a / --a     (먼저 증감)

 

비교 연산자

==    같다
!=    다르다
>    더 크다
<    더 작다
>=    같거나 크다
<=    같거나 작다

 

논리 연산자

&&    그리고 (AND)
||    또는 (OR)
==    같다
!    부정 (NOT)
!=    다르다

 

is / is! - 타입 검사를 하는 키워드

is - 같은 타입이면 true

is! - 다른 타입이면 true

 

as - 형변환(type casting)해주는 키워드

1. 관계가 없는 타입은 형변환이 불가능하다.

2. 상위 개념으로는 형변환이 가능하다.

 

 

함수(Function)

1. 값을 반환할 때는 return 사용

2. 입력 받을 때에는 매개변수(Parameter)로 받음

3. 실제 사용되는 값은 인수(Argument)임.

 

 

NULL - 아무런 값이 없는 상태

nullable - null 사용 가능

non-nullable - null 사용 불가능

String 타입의 변수는 NULL 값을 갖을 수 없고 String 값만 가질 수 있습니다.

하지만 String? 타입은 String 값과 NULL 값도 가질 수 있습니다.

 

출력을 할 때 변수이름 뒤에 !(느낌표)가 붙으면 null 값을 가질 수 없음을 의미합니다.

 

다른 type 들도 마찬가지 입니다 !

 

 

 

 

◡̈