[Flutter/Dart] 다트 변수 이해 및 변수 설정

    다트(Dart)는 다른 언어와 다른 독자적인 변수 설정 방식을 가지고 있습니다. 이는 다트가 플러터(Flutter)를 위해서 만들어졌기 때문인데요. 기본적으로 자바와 같은 전통적인 집단과 최신 트렌드를 모두 잡기 위한 다트 언어의 사상을 알 수 있을 것 같습니다.

     

    [Dart] 다트 변수 이해 및 변수 설정


    변수(Variable) 이해

    변수(變數, 변하다 변 셀 수)라는 것은 변하는 값을 뜻하며, 보통 변수를 쉽게 이해하기 위해서 그릇을 빗대어 설명하곤 합니다. 그릇에는 무엇이 들어 있을지 알수 없지만, 그릇에 어떤 요리를 담느냐에 따라 그릇은 더이상 그릇이 아니라 특정 요리를 담는 도구로 바뀌기 때문입니다.

     

    자바(Java)와 C, C++ 같이 비교적 이전에 만들어진 언어들은 철저하게 계획적인 프로그램을 만드는 것을 선호하였고, 개발자가 프로그램을 대하는 능력이 지금보다 더 뛰어나야 했었습니다. 변수 하나하나 철저하게 설계를 해야 했었고, 잘못된 데이터가 들어간 변수는 가차없이 에러를 뱉었으며, 프로그램의 최적화로 인해서 정수가 양수인지 음수인지 그리고, 데이터는 몇글자까지인지를 감안하여 개발을 했습니다.

     

    변수는 그릇과 같다

     

    하지만, 하드웨어가 풍족해지고 개발자들에게 불필요한 것들은 점점 사라지면서 점차 편의성이 높아지는 Python 같은 언어들이 등장하기 시작하였습니다. 그 결과 최근의 언어들은 변수에 타입을 지정하지 않고, 값에 따라 스스로 판단하는 인텔리한 변수로 변모하기 시작하였죠.

     

    즉, 예전에는 국은 국그릇에만 담았어야 했지만, 지금은 국을 담으면 그릇이 국그릇으로 모양이 바뀌는 마치 터미네이터 T-1000과 같다고 해야 할까요? 개발자는 오로지 알고리즘만 신경 쓰면 되는 시기로 바뀌고 있습니다.

     

    물론 특정한 타입으로 변수를 지정하는 것이 무조건 올드하다는 것은 아닙니다. 예를 들어 원치 않는 값이 들어갈 경우 이전 언어는 값을 대입하는 순간에 이미 알 수 있을 정도로 위기 상황이 줄어들 수 있습니다. 즉 타입을 지정하는 변수가 무조건 올드하다는 것은 언어의 장단점을 무시하는 것이라 말을 할 수 있으며, 최근 언어의 트렌드가 이렇다는 것일 뿐 최근 언어 중에서도 철저한 규칙을 지키는 언어도 물론 있습니다.

     

     

    다트(Dart)의 변수 타입

    다트는 참 재미있는 언어입니다. 기본적으로 다트는 자바를 오랫동안 사용한 개발자들을 끌어와야 합니다. 안드로이드(Android)라는 운영체제가 자바로 버텨왔던 진영이기 때문이죠. 하지만, 그렇다고 최근에 등장한 개발자들을 무시할 수도 없습니다. 특히 플러터(Flutter)는 자바와 같이 규칙이 있는 언어임과 동시에 리액트(React) 같이 다수의 진영들을 포용할 수 있어야 하기 때문입니다.

     

    그렇기에 다트는 양쪽의 모든 것을 수용하였고, 그 결과 하이브리드 언어와 같은 느낌으로 재탄생되었다고 보면 될 것 같습니다. 

     

    void main() {
      String hello = "Hello World!!";
      print(hello);
    }

    다트는 위와 같은 전형적인 자바 문법의 변수를 사용할 수 있습니다. 아무래도 자바 개발자들은 다트를 비교적 빨리 배울 수 있을 것 같습니다.

     

    void main() {
      int korean = 90;
      int math = 80;
      int sum = korean + math;
      print("국어점수는 : $korean");
      print("수학점수는 : $math");
      print("총합은 : $sum");
    }

    그리고 이와 같이 int 형도 사용할 수 있습니다.

     

     

    하지만 여기까지라면 다트는 자바에서 벗어나지 못했을 언어이고, 트렌드를 따라가지 못한다고 생각하는 사람들이 많았을지도 모르는데 이는 아래와 같이 타입을 지정하지 않는 var라는 타입으로 해결할 수 있습니다.

     

    즉 위에 국어점수, 수학점수 그리고 총점을 계산하는 변수를 아래와 같이 바꿔도 동작을 한다는 것입니다.

    void main() {
      var korean = 90;
      var math = 80;
      var sum = korean + math;
      print("국어점수는 : $korean");
      print("수학점수는 : $math");
      print("총합은 : $sum");
    }

     

    String이 무엇이고, int가 무엇이고, var가 무엇이지? 라고 생각하는 개발을 해본적이 없는 분들은 일단 다트가 다양한 타입을 선언해준다는 것만 이해를 하면 됩니다. (다음 포스팅에서 다트 변수에 대해서 보다 자세히 적을 예정이니까요)

     

     

    그럼 파이썬을 다루는 사람들이라면 var를 사용하면 파이썬 변수처럼 되는건가? 생각할 수 있습니다. 실제로 파이썬의 경우 아래와 같이 변수는 정말 공간만 제공하는 역할이기 때문입니다.

     

    korean = 90
    math = 80
    print(korean + math)
    
    korean = "국어"
    math = "수학"
    print(korean + math)

     

    자바만 했던 사람이라면 상상도 못할 코드일 것입니다. 저렇게 변수를 다양하게 쓰게 될 경우 에러에 어떻게 대응하지? 생각할 수 있으니까요. 하지만 파이썬은 에러를 뱉지 않고 아래와 같이 성공적으로 결과를 뱉습니다.

     

    170
    국어수학

     

    하지만 var 형은 위와 같은 자유도를 허락하지 않습니다.

    void main() {
      var korean = 90;
      var math = 80;
      var sum = korean + math;
      
      korean = "국어";
      math = "수학";  
    }

    다트에서 이렇게 코딩을 하게 되면, 이미 하단의 korean, math 밑에 빨간줄이 쳐지게 되면서 에러가 발생했다는 것을 암시해줍니다.

     

    Error compiling to JavaScript:
    Info: Compiling with sound null safety
    lib/main.dart:6:12:
    Error: A value of type 'String' can't be assigned to a variable of type 'int'.
      korean = "국어";
               ^
    lib/main.dart:7:10:
    Error: A value of type 'String' can't be assigned to a variable of type 'int'.
      math = "수학";  
             ^
    Error: Compilation failed.

     

    그리고 이렇게 에러가 발생하게 됩니다. 에러 내용을 보면 int 형의 타입을 String 값으로 assigned(할당) 할 수 없다는 말이 나오는 것을 보면 다트의 var는 다양한 타입의 값을 자유롭게 넣는 것이 아니라는 것을 알 수 있습니다.

     

    Python과 같이 나는 정말 자유로운 코드를 짜고 싶다라고 할 경우 var가 아니라 dynamic이라는 변수를 설정하면 파이썬과 같은 코드가 가능해집니다.

     

    void main() {
      dynamic korean = 90;
      dynamic math = 80;
      
      korean = "국어";
      math = "수학";  
    }

     

    파이썬에 익숙한 사람들이라면 var보단 dynamic을 써서 물과 같은 변수를 만들 수 있는 것이죠. 실제 위 코드에서 dynamic 중 하나를 var로 변경하게 되면 아래와 같이 var 변수만 에러표시(빨간 밑줄)가 나는 것을 볼 수 있습니다.

     

    var 형만 빨간 밑줄

     

    그러면 파이썬만 해온 사람들은 변수에 대해서 별도로 배울 필요가 없느냐?라는 것은 다른 이야기가 될 수 있습니다. 내가 평생 남의 코드를 안보고 짤 수 있다면 다행이겠지만, 자바나 C언어같이 규칙적인 언어를 주구장창 짜온 개발자라면 타입을 선언하는 것이 편리하기 때문에 그 사람들의 코드를 이해하려면 어떤 변수가 있는지는 이해를 해야 될 것입니다.

     

    즉, 내가 변수를 지정하는 것과 지정하지 않는 것은 선택의 영역이지만, 변수가 어떤 타입이 있는지는 배워야 할 것입니다. 여기까지 다트의 변수에 대해서 간단히 알아봤습니다. 다음 포스팅은 다트의 변수는 어떤 종류가 있으며 좀 더 자세히 예제를 보면서 알아보도록 하겠습니다.

     

    다트 포스팅

    [Dart] 다트언어의 이해, 필요성 및 온라인 도구 사이트

     

    [Dart] 다트언어의 이해, 필요성 및 온라인 도구 사이트

    다트(Dart)의 개념 플러터(Flutter)를 이용해서 앱을 개발하기 위해서는 다트(Dart)라는 구글이 만든 프로그래밍 언어를 사용해야 합니다. 다트는 현재 ECMA표준[1](Ecma International이 ECMA-262 기술 규격에

    needneo.tistory.com

     

    반응형

    댓글

    Designed by JB FACTORY