Variables
다음은 변수를 생성하고 초기화 하는 예시 입니다.
변수는 참조를 저장합니다. name
이라는 변수는 값이 "Bob"인 String
객체에 대한 참조를 포함합니다.
name의 타입은 문자열로 유추되지만 개체가 단일 타입으로 제한되지 않는 경우 Object 타입(필요에 따라 Dynamic)으로 지정하여 해당 타입을 변경할 수 있습니다.
또 다른 옵션은 유추될 타입을 명시적으로 선언하는 것입니다.
Note: 이 페이지는 지역 변수에 직접 자료형을 지정(type annotaion) 해주는 대신 var를 사용하는 스타일 가이드 권장 사항을 따릅니다.
Default value
nullable 타입인 초기화되지 않은 변수의 초기 값은 null
입니다. (null safety 타입이 아닌 경우 모든 변수에는 nullable 타입이 있습니다.) number 타입의 변수도 처음에는 null입니다. 왜냐하면 number 타입은 Dart의 다른 모든 것과 마찬가지로 객체(Object)이기 때문입니다.
Note: 프로덕션 코드는 assert()
호출을 무시합니다. 반면에 개발하는 동안 assert(condition)
은 조건이 거짓이면 예외를 던집니다. 자세한 내용은 Assert 참조하세요.
null safety 타입의 경우 변수 값을 사용하기 전에 초기화해야 합니다.
선언된 지역 변수를 초기화할 필요는 없지만 사용하기 전에 값을 할당해야 합니다. 예를 들어 다음 코드는 Dart가 print()
에 전달할 때 lineCount
가 null이 아님을 확인할 수 있기 때문에 유효합니다.
최상위 및 클래스 변수는 초기화 코드는 변수가 처음 사용될 때 실행되는 lazily initialized 입니다.
Late variables
Dart 2.12에는 두 가지 사용 사례가 있는 late
키워드를 추가되었습니다.
선언 후에 초기화되는 nullable이 아닌 변수를 선언하기 위해 사용합니다.
변수를 느리게 초기화하기 위해 사용합니다.
Late 변수 초기화에 실패하면 변수를 사용할 때 런타임 오류가 발생합니다.
변수를 late로 표시하지만 선언 시 초기화하면 실질적인 변수 초기화는 변수가 처음 사용될 때 실행됩니다. 이러한 지연 초기화는 다음과 같은 경우에 유용합니다.
변수가 필요하지 않을 수 있으며 초기화하는 데 비용이 많이 드는 경우.
인스턴스 변수를 초기화하고 있으며 이에 대한 액세스 권한이 필요한 경우.
다음 예시에서 temperature
변수가 사용되지 않으면 값비싼 readThermometer()
함수가 호출되지 않습니다.
Final and const
변수를 수정하지 않으려면 var
대신 또는 타입에 final
또는 const
를 추가하여 사용하세요. final 변수는 한 번만 초기화 할 수 있습니다. const 변수는 컴파일 타임 상수입니다. (Const 변수는 암묵적으로 최종입니다.)
다음은 final 변수를 만들고 초기화하는 예입니다.
final 변수의 값은 변경할 수 없습니다.
컴파일 타임 상수가 될 변수에는 const를 사용하세요. const 변수가 클래스 레벨에 있으면 static const
로 표시합니다. 변수를 선언할 때, 값을 number 또는 문자열 리터럴, const 변수 또는 상수 숫에 대한 산술 연산 결과와 같은 컴파일 타임 상수로 설정합니다.
const 키워드는 상수 변수를 선언하기 위한 것만이 아닙니다. 상수 값을 생성하는 생성자를 선언할 수도 있습니다. 모든 변수는 상수 값을 가질 수 있습니다.
위의 baz와 같이 const
선언의 초기화 표현식에서 const
를 생략할 수 있습니다. 자세한 내용은 DON’T use const redundantly 참조하세요.
const
값으로 초기화 했어도 final 또는 const 가 아니라 변수의 값을 변경할 수 있습니다.
const
변수의 값은 변경할 수 없습니다.
type checks and casts(is
또 as
), collection if, spread operators(... 또는 ...?)를 사용하여 상수를 정의할 수 있습니다.
Note: final
객체는 수정할 수 없지만 객체의 필드는 변경할 수 있습니다. 그에 비해 const
객체는 그 필드도 변경할 수 없습니다.
const
를 사용하여 상수 값을 만드는 방법에 대한 자세한 내용은 Lists, Maps 및 Classes를 참조하세요.
Last updated