반응형

이번 스터디 부터는 내용이 쫌 길다.

듣고있는 강의의 시간이 점점 길어지면서 그냥 바로 Flutter로 넘어가고 싶지만...

아무리 경력개발자여도 기초는 무시하면 안되는 법....

이번 포스팅은 선언자에 관한 내용.

정해진 값이 명확하지 않을때 사용하여 최초 할당된 값에 따라 변화하는 var타입과

단어 그 자체로 변동성이 있는 dynamic에 대해서다.

자세한 건 아래 코드블럭을 참고하고, 아래 dart 구문을 돌리기 위한 준비물인 웹컴파일러는 

첫번째 포스팅을 참조바람 => Dart언어공부- 01.HelloWorld

 

//06.var, dynamic 타입
//언제나 그렇듯 자바의 psvm처럼 main부터 시작.
void main() {
  //기존처럼 var로 선언하여 문자열 할당.
  var name = '임의값';
  print(name);
  
  //이번에는 var로 선언하여 숫자값을 할당
  var number = 2;
  print(number);
  
  
  //문자열로 사용하겠다고 선언 후, 숫자값을 할당한다면 당연히 불가능하다.
  //String number2 = 2;
  
  //var선언자는 내가 할당한 값에 의해 타입이 정해진다.
  
  //위에 var로 선언 후, 다시 문자열을 재할당 해보자.
  name = '임의값 변동';
  //문제없이 변경된 값으로 추출된다.
  print(name);
  
  //이번에는 숫자값을 넣어보자.
  //해당변수를 처음 선언 후 할당된 값은 문자열.
  //숫자값을 할당하려 하면 당연히 오류가 발생한다.
  //이미 name변수는 문자열 타입으로 지정되었기 때문.
  //name = 1;
  //print(name);
  
  
  
  //이번에는 dynamic이라는 선언자를 살펴보자.
  dynamic _name = '다이나믹값';
  //var선언자를 사용했을때 처럼 문제없이 출력된다.
  print(_name);
  
  //var타입에서는 아래처럼 숫자를 넣었을땐 오류가 발생했지만
  //dynamic선언자를 사용하면 오류없이 값의 종류를 바꿀수 있다.
  //dynamic은 이 처럼 할당된 변수값의 종류에 영향없이 타입이 변경되는 선언자라고 할수있다.
  _name = 1;
  print(_name);
    
  //그런데 var선언자의 한가지 특이한 점이 있다.
  //var를 사용하는데, 이번에는 변수를 할당하지 않고 선언해보자.
  var _named;
  
  _named = 'dynamic?';
  print(_named);
  
  //최초 선언시 값을 할당해주면, 타입이 지정되지만 (초기화하지 않는다고 표현함.)
  //그렇지 않고 이 후에 값을 지정해주면 마치 dynamic처럼 값의 타입이 변동된다.
  
  //위에 문자열을 넣었지만, 아래와 같이 숫자값을 넣는다면?
  _named = 1;
  //문제없이 기능이 동작한다.
  print(_named);
  
  //그러면, int나 String, double이런거 없이 그냥 편하게 var나 
  //아니면 더 간단하게 dynamic로 쓰면 되는거 아닌가? 하겠지만
  
  //프로그램을 만들다 보면 선언된 변수를 사용할 때, 숫자로 처리되어야 하는
  //변수값이 갑자기 문자열로 변경이 된다거나, 하는 일이 발생될수 있다.(오류발생)
  //또한 추후 내가 유지보수를 하거나 다른사람이 봤을때, 용도의 명확성을 알려주기 위해서도
  //확실한 선언자를 사용하는것이 좋다.
  //물론 내 생각이기도 한데, 대부분의 회사가 그렇게함.
  
}

 

자 그럼 결과물은?

임의값
2
임의값 변동
다이나믹값
1
dynamic?
1

다음 공부는 기다리고 기다리던 자료구조다.

처음엔 다른언어 기초부터 다시 배울생각에, 막막하기도 하고 지루할거같기도 했는데

막상해보니 재밌다.

 

한가지 진짜 확실한 건, 언어 한가지만 제대로 해두면 다른 언어 배우는 속도는 2배인거같다.

(프로그래밍 언어에 한함..)

반응형

+ Recent posts