Dart: Variables, Data Types, Functions
Variables
변수를 선언하는 방법
변수를 선언하는 방법에는 크게 두 가지가 있습니다.
1. 명시적으로 변수 타입 지정
void main() {
int intVal = 10;
double doubleVal = 12.3;
String stringVal = 'hello';
bool boolVal1 = true;
bool boolVal2 = false;
}
첫 번째 방법은 위의 예시처럼 변수의 타입(int, double, String, bool)을 명시적으로 지정해주는 방법입니다.
2. var keyword 사용
void main() {
var intVal = 10;
var doubleVal = 12.3;
var stringVal = 'hello';
var boolVal = true;
}
두 번째 방법은 위의 예시처럼 var keyword를 사용하는 방법입니다.
위의 예시에서 확인 할 수 있는 것처럼 var keyword를 사용하여 변수를 선언하면, Dart Compiler가
변수의 타입을 알아서 추론해주기 때문에 첫 번째 방법과 달리 변수의 타입을 명시적으로 지정해줄 필요가 없습니다.
var keyword로 선언된 변수의 값을
업데이트 할 때는 변수의 타입을 반드시 유지해야 합니다.
3. 명시적으로 변수 타입 지정과 var keyword 사용 패턴
똑같이 변수를 선언하는 방법인데 언제 어떤 방법을 사용하는 것이 좋을까요?
명시적으로 변수 타입을 지정해주는 방법은 class에서 변수나 property를 선언할 때 사용하며,
var keyword를 사용하는 방법은 함수나 메소드 내에서 지역변수를 선언할 때 사용합니다.
late 변수
final 변수 vs const 변수
final 변수
const 변수
Data Types
기본 자료형
void main() {
var intVal = 10;
var doubleVal = 12.3;
var stringVal = 'hello';
bool boolVal = true;
}
Dart의 기본 자료형에는 정수 값을 가지는 int 형, 실수 값을 가지는 double 형, 문자열 값을 가지는 String 형, true/false 값을 가지는 bool 형이 있습니다.
집합 자료형
void main() {
List<String> listVal = [
'a',
'b',
'c',
];
Set<String> setVal = {
'a',
'b',
'c',
};
Map<String, int> mapVal = {
'a': 1,
'b': 2,
'c': 3,
};
}
Dart의 집합 자료형에는 중복을 허용하는 순서가 있는 collection 구조인 List 형, 중복을 허용하지 않는 순서가 없는 collection 구조인 Set 형, key-value 쌍으로 구성된 자료 구조인 Map 형이 있습니다.
집합 자료형의 마지막 요소에 ,를 붙이면 여러 줄로 자동 포매팅 되어 가독성이 높아집니다.
List 형
List<String> listVal = ['a', 'b', 'c'];
Set 형
Set<String> setVal = {'a', 'b', 'c'};
Map 형
Map<String, int> mapVal = {'a': 1, 'b': 2, 'c': 3};
String Interpolation
String
interpolation은 Javascript의 $와 비슷한 역할을 하며, 이를 통해 문자열에 변수나 상수를 삽입할 수 있으며, 데이터 타입에 따라 문자열에 중괄호를 포함한 표현식을 삽입할 수 있습니다.
String Interpolation 사용 방법
String Interpolation의 기본적인 사용 방법은 다음과 같습니다.
- 변수 또는 상수 삽입 => $변수명
- 표현식 삽입 => ${표현식}
다음은 문자열에 변수와 표현식을 삽입하는 코드입니다.
void main() {
var name = '오민재';
var age = 26;
var height = 163.0;
var a = 3;
var b = 7;
print("제 이름은 $name 입니다.");
print("나이는 $age 살이며, 키는 ${height}cm 입니다.");
print("$a 곱하기 $b는 ${a * b}입니다.");
}
Collection If
Collection if를 활용하면 코드 내에 if문을 사용하여 조건에 따라 리스트 내 요소를 결정할 수 있습니다.
아래의 예시는 giveFive가 true일 때만 numbers에 5를 요소로 추가하는 코드입니다.
giveFive = false 일 때
void main() { var giveFive = false; var numbers = [ 1, 2, 3, 4, if (giveFive) 5, ]; print(numbers);}
void main() {
var giveFive = false;
var numbers = [
1,
2,
3,
4,
if (giveFive) 5,
];
print(numbers);
}
위의 코드를 실행한 결과입니다.
giveFive = true 일 때
void main() {
var giveFive = true;
var numbers = [
1,
2,
3,
4,
if (giveFive) 5,
];
print(numbers);
}
위의 코드를 실행한 결과입니다.
Collection For
Functions
함수 정의 방법
Dart에서 함수를 정의하려면 다음과 같은 구문을 사용합니다.
return_type function_name(parameter_list) {
function_body;
}
- return_type: 함수의 반환 타입을 명시합니다.
- function_name: 함수의 이름을 명시합니다.
- parameter_list: 함수로 전달되는 파라미터 목록을 명시합니다.
- function_body: 함수가 수행하는 작업을 명시합니다.
다음은 일반적인 Dart 함수 정의의 예시입니다.
String sayHello(String? name) {
return 'Hello $name ! Nice to meet you :)';
}
void main() {
print(sayHello('Minjae'));
}
Fat arrow syntax는 함수에서 특별한 동작 없이 어떤 값을 즉시 return 하는 경우 사용하며, 함수에서 단일 표현식을 정의하는데 사용됩니다. Fat arrow syntax를 사용하면 함수를 하나의 statement로 간결하게 표현할 수 있습니다.
Fat Arrow Syntax 사용 방법
중괄호{} 를 삭제하고 '=>' 키워드를 명시해줍니다.
다음은 위의 함수를 fat arrow syntax를 사용하여 표현한 코드입니다.
String sayHello(String? name) => 'Hello $name ! Nice to meet you :)';
void main() {
print(sayHello('Minjae'));
}