Flutter에서는 변수를 선언하는 방법으로 var 키워드, 자료형을 명시하는 방법, final 키워드, const 키워드를 사용할 수 있습니다. 각각의 방법에 대해서 자세히 알아보겠습니다.
1. var 키워드를 사용하는 방법
var 키워드를 사용하여 변수를 선언할 경우, 변수의 자료형은 자동으로 추론됩니다. 예를 들어, 다음과 같이 선언할 수 있습니다.
var name = "John";
위의 코드에서 변수 name의 자료형은 String으로 추론됩니다
2. 자료형을 명시적으로 지정하는 방법
변수의 자료형을 직접 명시하여 선언할 수도 있습니다. 이 경우, 변수의 자료형은 명시된 자료형으로 결정됩니다. 예를 들어, 다음과 같이 선언할 수 있습니다.
String name = "John";
위의 코드에서 변수 name의 자료형은 명시적으로 String으로 지정됩니다.
3. final 키워드를 사용하는 방법
final 키워드를 사용하여 변수를 선언할 경우, 변수는 한 번 선언되면 값을 변경할 수 없습니다. 예를 들어, 다음과 같이 선언할 수 있습니다.
final name = "John";
위의 코드에서 변수 name은 한 번 할당된 값이 변경될 수 없습니다.
final 키워드를 사용하여 선언된 변수는 런타임 시 값이 할당된 후 변경할 수 없습니다. 즉, final 변수는 런타임 상수입니다. final 변수는 선언할 때 또는 생성자에서 값을 할당할 수 있으며, 그 후에는 값을 변경할 수 없습니다.
final 변수는 선언된 클래스의 생성자에서 초기화될 수 있습니다. 이 때 final 변수는 늦은 초기화를 할 수 없습니다. 또한 final 변수는 일반적으로 상수 값을 저장하기 위해 사용됩니다.
4. const 키워드를 사용하는 방법
const 키워드를 사용하여 변수를 선언할 경우, 변수는 컴파일 시간 상수입니다. 예를 들어, 다음과 같이 선언할 수 있습니다.
const name = "John";
위의 코드에서 변수 name은 컴파일 시간에 할당된 값이 변경될 수 없습니다.
const 키워드를 사용하여 선언된 변수는 컴파일 시 값이 할당됩니다. 즉, const 변수는 컴파일 시간 상수입니다. const 변수는 반드시 선언 시 값을 할당해야하며, 그 후에는 값을 변경할 수 없습니다.
const 변수는 늦은 초기화(Lazy initial)를 할 수 없습니다. 또한 const 변수는 클래스의 멤버 변수로 선언될 수 있으며, 선언 시에는 반드시 static 키워드와 함께 사용되어야 합니다.
5. dynamic 키워드를 사용하는 방법
dynamic은 변수의 자료형이 런타임 시에 결정되도록 하는 키워드입니다. 즉, 변수가 어떤 자료형을 가질지 런타임 시에 결정되므로 컴파일러가 변수의 자료형을 확인하지 않습니다.
dynamic을 사용하여 변수를 선언하면 변수의 자료형은 런타임 시에 결정됩니다. 예를 들어, 다음과 같이 선언할 수 있습니다.
dynamic name = "John";
위의 코드에서 변수 name의 자료형은 런타임 시에 String으로 결정됩니다. 즉, 변수의 자료형은 초기 값에 따라 동적으로 결정됩니다.
dynamic 변수는 다른 자료형으로 캐스팅될 수 있습니다. 예를 들어, 다음과 같이 선언된 dynamic 변수를 int로 캐스팅할 수 있습니다.
dynamic value = 123;
int intValue = value as int;
하지만 dynamic을 남용하는 것은 좋지 않습니다.
변수의 자료형이 런타임 시에 결정되므로, 변수의 자료형에 대한 에러를 런타임 시에 발견할 수밖에 없습니다. 이러한 이유로, 가능한 경우에는 dynamic을 사용하지 않는 것이 좋습니다.
참고)
* final과 const의 차이점은 값을 할당하는 시점에 있습니다. final 변수는 런타임 시 값이 할당되지만 const 변수는 컴파일 시 값이 할당됩니다. 이러한 차이로 인해, final 변수는 런타임에서 값을 변경할 수 없지만 const 변수는 컴파일 시간에 이미 결정된 값을 갖습니다.
* 변수는 선언 후 초기값을 할당할 수도 있고, 나중에 값을 할당할 수도 있습니다. 변수를 초기화하지 않고 사용하면 null 값이 할당됩니다.
'Dev > Flutter' 카테고리의 다른 글
[Flutter] 학습(4) - 컬렉션 (Collection)-2 List에서 자주 사용하는 함수들 (0) | 2023.03.04 |
---|---|
[Flutter] 학습(4) - 컬렉션 (Collection)-1 (0) | 2023.03.04 |
[Flutter] dart 문법 테스트 하기 (0) | 2023.03.03 |
[Flutter] 학습(2) Flutter와 Dart 언어의 컴파일 플랫폼 (0) | 2023.03.03 |
[Flutter] 학습(1) 개발환경에 필요한 요소 (0) | 2023.03.03 |
댓글