Dart
에서는 JavaScript
와 다른 점들이 제법 존재하는데,
void main()
을 작성해줘야 코드가 실행될 수 있다는 점, print
를 사용하여
기존의 JavaScript
에서의 console
과 유사하게 콘솔 출력을 할 수 있다는 것이다.
그리고 코드가 끝날 때마다 반드시 ;(세미콜론)
이 찍혀야 에러가 나지 않는다.
void main() {
print('Hello World!');
}
여전히 주니어 개발자지만 이게 얼마만의 Hello World란 말인가, 후후...
괜히 학생때로 돌아간 것 같아 기분이 굉장히 묘하다.
일반적인 변수 선언 방법에는 크게 var
, type
, dynamic
, final
이렇게 4가지가 있다.
type
과 동일한 type
에 한하여 재할당이 가능하다.'한글'
(String)을 할당하고 123
(int)를 할당하는 것은 불가능하다. void main() {
var name = '소설';
name = 'snow';
}
type
이 지정되어 있으므로 다른 type
의 재할당은 불가능하다.void main() {
String name = '소설';
name = 'snow';
}
var
선언을 통해서도 가능하다.// dynamic
void main() {
dynamic name = '소설';
name = 123;
}
// var
void main() {
var name;
name = '소설';
name = 123;
}
JavaScript
의 const
선언과 동일하다.type
과 함께 선언할 수 있으나, 할당된 값으로 type
을 알아서 유추해주기 때문에type
을 선언해주지 않아도 된다.void main() {
final kor = '소설';
final String eng = 'snow';
}
late
선언은 var
이나 final
앞에 선행하여 작성할 수 있는 선언문으로,print
로 접근할 수 없다.void main() {
late final name;
print(name); //ERROR, 불가능
late final name;
name = '소설';
print(name); //가능
}
final
과 마찬가지로 재할당, 재선언이 불가능하다.final
이나 var
를 사용하는 것이 적절하다.void main() {
const name = '소설'; //OK
name = 'snow'; //ERROR, 불가능
const name = fetchData(); //ERROR, 불가능
//예를 들어, 아래와 같이 활용이 가능할 것이다.
const max_user_coin = 10000;
}
Null Safety란, 데이터가 null
이 될 수 있음을 명시하여
null
이 무차별적으로 원치 않는 곳에서 참조되지 않도록 방지해주는 것을 의미한다.
기존의 선언과 동일하지만, type
뒤에 ?
를 붙여서 null
값을 가질 수 있다는 것을 명시할 수 있다.
void main() {
String name = '소설';
name = null; //ERROR, 불가능
String? name = '소설';
name = null; //가능
}
단, 이렇게 null
값을 가질 수 있다고 명시한 경우
null
이 아닌 값을 가졌을 때에 한하여 코드가 돌아가도록 하는 것이 바람직하다.
void main() {
String? name = '소설';
if ( name != null ) {
name.isEmpty;
}
// 이 주석을 기준으로 위와 아래의 코드는 동일하게 작동한다.
name?.isEmpty;
}