fun main과 같은 듯.void main() {
var name = 'name';
name = 'name2';
String name2 = 'name2';
name2 = 2; // error
}
var 변수 이름 = 넣을 값;으로 번수를 선언할 수 있다.int number = 1;var의 경우는 함수나 메소드 내부의 지역 변수를 선언할 경우 사용할 것을 권장하고 있다.void main() {
var test;
test = 1
test = '1';
test = true;
dynamic test2;
if(test2 is String) {
// String일 경우 처리
// ...
}
}
any와 같은 역할을 하는 것 같다.any 사용을 최대한 자제하듯, dynamic 또한 자제하는 것이 좋아보인다.개발자가 null 값을 참조했을 경우, 컴파일러 상에서는 오류가 없지만
유저가 사용하는 런타임에서 에러가 발생할 수 있다.
이를 방지하고자 있는 것이 여러 언어에서 제공하는 null safety이다.
void main() {
String? name = 'name';
name = null;
if(name != null) {
// String 메소드를 사용할 수 있다.
}
name?.isNotEmpty; // null이 아닐 경우 isNotEmpty 실행 값 반환.
}
한 번 선언된 변수는 수정할 수 없도록 상수 변수를 선언하는 것이다.
JS에서의 const 역할과 똑같다.
void main() {
final name = 'name';
name = 'name2'; // error!
final String name = 'name2';
// 타입을 명시할 수도 있다.
// 컴파일러가 타입을 추론하니 굳이 명시할 필요는 없다.
}
선언만 미리 해두고 할당은 나중에 하는 것.
API로 데이터를 다 받아온 후에 값을 할당하는 식으로 주로 쓰는 것 같다.
void main() {
late final String name;
name = 'name';
late final String name2;
print(name2); // error!
}
상수 역할을 하지만 JS에서의 const와는 다른 개념이다.
컴파일 전에 알 수 있는 값이어야 한다.
void main() {
const name = 'name';
name = 'name2'; // error!
}
둘 다, 한 번 할당되면 값을 변경할 수 없는 것은 똑같다.
final
const