본문 바로가기
자기계발/IT

[Flutter/플러터] 다트(Dart) 언어 기본 문법 알아보기

by KTC 2023. 2. 13.

목차

    반응형

    안녕하세요!

    다트 언어의 기본 문법을 알아보겠습니다. 웹페이지에서 간편하게 문법을 연습할 수 있습니다.

     

     

    DartPad

     

    dartpad.dev

     

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

    void main() {
        //여기에 작성
        print("Hello, World!");
    }

     

     

    주석

     

    • 주석은 코드에 달아주는 설명으로 실행에 영향을 주지 않음
    • //         : 한 줄 주석
    • /* ... */ : 여러 줄 주석
    • ///        : 문서 주석(메서드나 클래스 위에 작성하면 dartdoc 같은 문서 생성 도구를 통해 문서를 자동으로 생성)
    // 이건 주석
    /**
    * 이것 또한 주석
    **/
    
    /// 이것 역시 주석

     

    문장

    • 문장은 명령의 단위
    • 문장 끝은 세미콜론( ; )으로 표시
    void main() {
        //여기에 작성
        print("Hello, World!")    // 에러!
        print("Hi, Land!");
    }

     

    변수

    • 변수는 데이터(값)을 담는 상자
    • 변수 종류를 타입 또는 자료형
    • 다트는 숫자나 문자열 같은 기본 변수 타입을 제공하며, 사용자가 직접 타입 정의 가능
    • 다트가 제공하는 기본 타입
    • int : 정수
    • double : 실수(소수점)
    • String : 문자열
    • bool : 참 또는 거짓 값을 갖는 타입
    • 변수명 앞에 타입을 선언하고, 변수명 뒤에 = 기호로 값을 할당
    • 각 변수의 타입에 맞는 값을 할당해야 함
    • 즉, int 타입에 문자열 타입을 할당 불가

     

    문자열 타입

    String name;        //변수 선언
    name = '홍길동';    //값 할당

     

    bool 타입

    bool a = true;		//참(거짓은 flase)
    bool a2 = i < 10;	//i는 10보다 작다.
    bool a3 = s.isEmpty;

     

    int, double 타입

    • 더 큰 자료형인 double 타입에 int 타입을 대입하는 자동 형변환은 다트에서 지원하지 않음
    int i = 10;		//정수 10
    double d = 10.0;	//실수 10.0
    
    double c = i;		//에러

     

    num 타입

    • num 타입은 int와 double 타입 모두 대입 가능
    num a = 10;	//정수 10
    num b = 20.0	//실수 20.0
    
    num c = a;	//ok
    c = b;		//ok

     

    값 재할당

    • 변수에 담긴 값은 언제라도 다른 값으로 변경 가능
    String s = 'hello';
    s = 'world';

     

    타입 추론

    • 다트는 타입을 직접 명시하지 않고 var로 대체할 수 있는 타입 추론을 지원
    var i = 100;		//int 타입
    var d = 100.1;		//double 타입
    var s = 'hello'; 	//문자열 타입
    var s2 = "hello";	//문자열 타입
    var b = true;		//불리언 타입
    var b2 = i < 10;	//불리언 타입
    var b3 = s.isEmpty;	//불리언 타입

     

    상수 final, const

    • 변수는 값이 변경되어 의도치 않게 에러를 발생할 가능성이 있음
    • 가급적으로 값이 변하지 않게 상수로 사용하는 것이 좋음
    • 선언할 때, final, const 키워드를 제일 앞에 붙이면 값이 수정되지 않는 상수로 사용 가능
    final String name = '홍길동';
    const String name2 = '이순신;'
    
    name = '임꺽정';	//에러
    name2 = '왜구';	//에러
    
    final name3 = '홍길동';	//타입을 생략하여 작성 가능

     

    • final과 const의 차이점
    • final은 실행중에 값이 결정되고, const는 컴파일 시 값이 결정됨
    final finalTime = DateTime.now(); // 실행 중 시간이 결정되므로 실행 가능
    const constTime = DateTime.now(); // error 발생, 컴파일 때에는 시간을 저장할 수 없음

     

    산술 연산자

    • + : 더하기
    • - : 빼기
    • * : 곱하기
    • / : 나누기(double 타입 반환)
    • ~/ : 몫(int 타입 반환)
    • % : 나머지(int 타입 반환)
    • assert() 함수는 계산 결과가 참인지 검사
    • 다음 코드는 결과가 모두 참
    assert(2 + 3 == 5);
    assert(8 - 2 == 6);
    assert(2 * 9 == 18);
    assert(7 / 2 == 3.5);
    assert(7 ~/ 2 == 3);
    assert(7 % 2 == 1);
    
    assert('hello' + ' world' == 'hello world');

     

    증감 연산자

    • 값을 1씩 증가시키거나 감소시키는 연산자로 후위 연산과 전위 연산이 있음
    • 후위 연산 : [식]++, [식]-- (예 : a++, a--)
    • 전위 연산 : ++[식], --[식] (예 : ++a, --a)
    var num = 0;
    print(num++);	//나중에 계산하므로 0 출력
    //num = 1
    print(++num);	//먼저 계산하므로 2 출력
    //num = 2

     

    비교 연산자

    • == : 같다
    • != : 다르다
    • > : 더 크다
    • < : 더 작다
    • >= : 크거나 같다
    • <= : 작거나 같다
    • 다음 코드는 결과가 모두 참
    assert(2 == 2);
    assert(4 != 2);
    assert(4 > 1);
    assert(4 < 6);
    assert(2 >= 2);
    assert(2 <= 3);

     

    논리 연산자

    • && : 그리고
    • || : 또는
    • == : 같다
    • ! : 부정
    • != : 다르다
    print(true && true);	//true
    print(true && false);	//false
    print(false && false);	//false
    
    print(true || true);	//true
    print(true || false);	//true
    print(false || false);	//false
    
    print(true == true);	//true
    print(true == false);	//false
    print(false == false);	//true
    
    print(true != true);	//false
    print(true != false);	//true
    print(false != false);	//false

     

    타입 검사

    • is : 같은 타입이면 true
    • is! : 다른 타입이면 true
    int a = 10;
    if(a is int) {
    	print('정수');
    }
    
    String b = 'hello';
    if(b is! int) {
    	print('숫자가 아님')
    }

     

    형변환

    • 형변환에는 as 키워드 사용
    • 다른 타입끼리는 변환이 안되고, 더 상위 개념으로 변환 가능
    var c = 30.5;
    ind d = c as int; //에러, int와 double은 모두 num을 구현하는 타입이지만 서로는 관계가 없으므로 형변환 불가
    
    double d = 30.5;
    num n = d as num; //as num 생략 가능, 형변환 성공
    반응형