develop/Flutter

[Flutter] dart 출력 하기, 변수/상수 선언 하기 (dart 기초 1)

방뎁 2022. 10. 13. 14:39
반응형

DART 시작하기 

Dart는, 

dart는 flutter를 하기 위해 꼭 배워야 하는 언어이다. 

안드로이드 스튜디오, IntelliJ IDEA, VS Code에서 dart를 지원한다. 

공식 사이트는 아래와 같다. 

https://dart.dev

 

Dart programming language

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

dart.dev

 

또한 공식 사이트에서 아래와 같이 효과적인 프로그래밍에 대한 가이드라인을 정의 해두었으니, 참고 할 수 있다. 

https://dart.dev/guides/language/effective-dart

 

Effective Dart

Best practices for building consistent, maintainable, efficient Dart libraries.

dart.dev

 

1. 언어의 기본, 출력!

print('Hello, World!');

flutter로 개발 하면서 디버깅 용으로 출력 하려면 

debugPrint("hello world debug");

으로 출력 할 수도 있다. 

swift, Kotlin 을 쓰다 dart를 배운다면,  ; (세미콜론)을 자주 빼먹을 수 있다... (경험담)

선언된 변수를 출력 하려면 어떻게 해야하는가?

print('$num');

debugPrint('${num.toString()}');

$변수 / ${변수} 

$변수 : 바로 뒤에 오는 변수만 출력 

 ${변수} : { } 안에 든 명령문 모두 실행

 

2. 언어의 기본,  변수 선언!

dart는 타입 추론이 가능한 언어이다.

따라서 

var 변수명 = 값;
dynamic 변수명 = 값;

이렇게 초기화 할 수 있다. 

하지만,  꼭 필요한 때를 제외하고는 권장 되지 않는다.

 

그럼 타입은 어떻게 선언 할 수 있을까.

String name = "홍길동";

int num = 10;

double pi = 3.14; 
  
bool isBool = true;

 

그렇다면 초기 값 없이 변수 선언만 하고 싶다면?

var variable;

String name;

int num;

double pi;
  
bool isBool;

그렇다면 var는 무슨 타입인 걸까?

  print("variable ${variable.runtimeType}"); // variable Null
  
  variable = 3;
  
  print("variable ${variable.runtimeType}"); // variable int
  
  variable = '2';
  
  print("variable ${variable.runtimeType}"); // variable String

 

그렇다면 dynamic은?

  dynamic dynamicsVariable;
  
  print("dynamicsVariable ${dynamicsVariable.runtimeType}"); // dynamicsVariable Null
  
  dynamicsVariable = false;
  
  print("dynamicsVariable ${dynamicsVariable.runtimeType}"); // dynamicsVariable bool
  
  dynamicsVariable = "false";
  
  print("dynamicsVariable ${dynamicsVariable.runtimeType}"); // dynamicsVariable String
  
  dynamicsVariable = 1;
  
  print("dynamicsVariable ${dynamicsVariable.runtimeType}"); // dynamicsVariable int
  
  dynamicsVariable = 1.1234;
  
  print("dynamicsVariable ${dynamicsVariable.runtimeType}"); // dynamicsVariable double

 

- Non-Nullable 과 Nullable

변수는 기본적으로 모두 Non-Nullable 타입으로 선언 된다. 

즉, 선언 후 null을 넣을 수 없다는 것 

그렇다면  Nullable 타입은 어떻게 선언 할까?

  var? variable; // 에러 발생
 
  String? name; 

  int? num;

  double? pi; 
  
  bool? isBool;

var 는 null을 허용 하지 않는다. 

Null safety 때문인데, 자세한 점은 아래의 링크에서 참고 할 수 있다. 

 

https://dart.dev/null-safety

 

Sound null safety

Information about Dart's null safety feature

dart.dev

 

 

3. 언어의 기본,  상수 선언!

- 값을 바꿀 수 없는 변수 :  상수

final / const 

위 키워드를 사용하면, 

  final int intFinal = 100; // 타입 생략 가능 
  final intFinal2 = 100;
  const int intConst = 100; // 타입 생략 가능 
  final intConst2 = 100;
  
  intFinal = 10; // Can't assign to the final variable  error
  intConst = 10; // Can't assign to the const variable error

이렇게 변할 수 없는 상수를 선언 할 수 있다. 

그렇다면  final 과 const 는 무슨 차이가 있는걸까?

간단하게 말해서 

const는 컴파일에서 상수가 된다.

const는 생성자에서 초기화 할 수 없다. 
final은 생성자에서 값을 받아 할당 할 수 있다.

 

즉 const는 런타임에 값을 넣을 수 없고

final은 런타임에 값을 넣을 수 있다. (한가지의 값)

 

vsCode나 안드로이드 스튜디오에서 문법 교정이 잘 되지만,

- final, const의 차이를 이해 하고,

- 변수 타입을 지정하고 초기화 하고,

- Nullable 을 선언 하는 방법

을 기억한다면, 보다 매끄러운 코딩이 될 것같다. 

 

반응형