기술 블로그 번역 3편입니다.
오늘은 Dart언어에서 변수를 선언할때 쓰이는 var과 dynamic 두 키워드를 비교합니다. 이해를 위해 자바스크립트 코드가 함께 있으니, 자바스크립트를 알고 있는 분은 좀 더 쉽게 이해할 수 있습니다.
var vs dynamic in Dart
Dart의 var 키워드는 JS의 JavaScript 키워드와 매우 유사하지만, 정확히 똑같다고 할 수는 없습니다. 대부분의 Dart 개발자는 Dart의 var를 JavaScript의 var처럼 사용하지만 이는 올바르지 않습니다. 이를 이해하기 위해 몇 가지 예를 들어 설명하겠습니다.
Dart에는 JavaScript의 var 키워드와 동등한 dynamic 키워드가 있습니다.
아래 4개의 예제를 참고해주세요.
Example 1
JavaScript와 Dart에서는 var을 사용하여 정의된 변수에 모든 타입의 데이터를 저장할 수 있습니다.
Dart Code Example
//main.dart
void main() {
var x = 'Maths pi';
var y = 3.14;
print(x); // Maths pi
print(y); // 3.14
}
JavaScript Code Example
//script.js
var x = 'Maths pi';
var y = 3.14;
console.log(x); // Maths pi
console.log(y); // 3.14
Example 2
JavaScript와 Dart는 서로 다른 종류의 데이터를 같은 변수에 저장할 수 있습니다.
Dart Code Example
//main.dart
void main() {
var x ;
x = 'Math pi';
print(x); // Maths pi
x = 3.14;
print(x); // 3.14
}
JavaScript Code Example
//script.js
var x ;
x = 'Math pi';
console.log(x); // Maths pi
x = 3.14;
console.log(x); // 3.14
Example 3
이제 Example 1과 2를 혼합하여 변수를 초기화하고, 다른 데이터 유형을 동일한 변수에 저장하려고 합니다. Dart에서는 유효하지 않지만 JavaScript에서는 유효하기 때문에 오류가 발생합니다.
Dart Code Example
//main.dart
void main() {
var x = 'Math pi';
print(x); // Maths pi
x = 3.14; // 여기서 컴파일 에러가 발생합니다.
// 문자열 변수에 double 값을 할당하려했기 때문입니다.
print(x);
}
JavaScript Code Example
//script.js
var x ;
x = 'Math pi';
console.log(x); // Maths pi
x = 3.14;
console.log(x); // 3.14
(Dart에서 발생한 컴파일 오류가 JavaScript 예제에서는 발생하지 않습니다.)
Example 4
마지막 예제입니다. Dart 에서 var 대신 dynamic을 사용하면 오류가 발생하지 않습니다. Dart에서의 dynamic은 JavaScript의 var와 동일합니다.
Dart Code Example
//main.dart
void main() {
dynamic x = 'Math pi';
print(x); // Maths pi
x = 3.14;
print(x); // 3.14
}
JavaScript Code Example
//script.js
var x;
x = 'Math pi';
console.log(x); // Maths pi
x = 3.14;
console.log(x); // 3.14
'개발자 : devZucca; > Flutter' 카테고리의 다른 글
Flutter 사용 중 IDE에서 안드로이드 모듈이 사라졌을때 (0) | 2020.11.03 |
---|---|
[Flutter] 안드로이드 생명주기에 따라 플러터 호출하기 (0) | 2020.09.10 |
Flutter 플러터 AlertDialog Widget (0) | 2020.06.08 |
Flutter 플러터 파일 구조(디렉터리 구분, 폴더 작명) (0) | 2020.06.03 |