키워드
A tour of the Dart language 페이지를 공부하면서 정리한 내용입니다.
Dart 언어는 아래와 같은 키워드를 갖습니다.
키워드 중 숫자로 마킹된 키워드는 식별자로 사용할 수 있지만 코드를 읽는데 혼란을 줄 수 있으므로 사용을 피해야 합니다.
(1)로 마킹한 키워드는 문맥 키워드(Contextual keywords)로 코드의 특정 위치에서만 의미가 있습니다. 이들은 어디서나 유효한 식별자로 사용할 수 있습니다.
void main() {
// 식별자로 사용이 가능합니다.
var async = 1;
}
// 함수 Body 앞에서 사용되어야 유효한 키워드로 동작합니다.
void foo() async {
// 비동기 함수 내부에서도 async를 식별자로 사용할 수 있습니다.
var async = 1;
}
(2)로 마킹한 키워드는 내장 식별자(Built-in Identifiers)로 코드의 대부분 위치에서 유효한 식별자 이지만 클래스, 타입명,
import
접두사로 사용할 수 없습니다.
// 클래스, 타입명, import 접두사로 사용할 수 없습니다.
import 'dart:html' as typedef;
class typedef {}
// 타입 정의 구문에서 유효한 키워드로 동작합니다.
typedef Fruit = String;
void main() {
Fruit apple = "Apple";
// 코드 대부분의 위치에서 유효한 식별자로 사용할 수 있습니다.
var import = 1;
var typedef = 1;
}
(3)으로 마킹한 키워드는 비동기 지원을 위한 키워드입니다.
await, yield
는async, async*, sync*
로 표시된 함수의 본문에서 식별자로 사용할 수 없습니다.
void main() {
// 식별자로 사용이 가능합니다.
var await = 1;
var yield = 2;
}
Future<void> asyncFunction() async {
// 비동기 함수에서는 await, yield를 식별자로 사용할 수 없습니다.
var await = 1;
var yield = 2;
}
Stream<int> generatorFunction(int n) async* {
// 제너레이터 함수에서도 await, yield를 식별자로 사용할 수 없습니다.
int await = 0;
while (await < n) yield await++;
}
마킹되지 않은 키워드는 예약어(Reserved words)이며 식별자로 사용할 수 없습니다.
Last updated