Dart 변수
var 사용
- Dart는 변수를 정의할 때 var를 사용합니다.
- 문자열도 넣을 수 있고, 숫자를 넣을 수도 있고, 실수를 넣을 수도 있습니다.
- 뿐만 아니라 list(배열)를 넣을 수도 있습니다.
- 클래스 안이나 메서드 안에 위치하는게 아니라 최상단에 위치가 가능합니다.
- 1급 객체로 함수의 파라미터로 전달도 가능하며, 메모리에 떠서 로딩이 가능합니다.
// 클래스 안이나 메서드 안에 위치하는게 아니라 최상단에 위치가 가능합니다.
// 1급 객체로 함수의 파라미터로 전달도 가능하며, 메모리에 떠서 로딩이 가능합니다.
// variable 타입은 동적으로 각 라인을 읽을 때 메모리의 사이즈가 정해집니다.
// 즉 크기를 알 수 없다가, 실행될 때 크기를 알 수 있습니다.
var name = "문자열";
var num = 1;
var fNum = 1.5;
var list = ["apple", "banana"];
void main() {
print(name);
print(num);
print(fNum);
print(list);
print(list[0]);
}
- dart test1.dart 를 터미널에서 입력해서 실행시켜보면 출력이 잘 됩니다.
Object
// Object를 만들 때 사용하는데 Dart에서는 Map이라고 하는 자료형입니다.
......
// Object를 만들 때 사용하는데 Dart에서는 Map이라고 하는 자료형입니다.
var user = {
"id" : 1,
"username" : "test"
};
void main() {
......
print(user);
// 찾을 때 키 값을 넣으면 원하는 값만 찾을 수 있습니다.
print(user["id"]);
}
- user Object와 user의 id 값만 출력되는 것을 확인할 수 있습니다.
자료형 직접 선언
// Type을 지정해서 선언
String name = "문자열";
int num = 1;
double fNum = 1.5;
// 바구니(컬렉션)에 담을 수 있는 데이터는 문자열 밖에 없습니다.
// 문자열을 정의할 때 "", '' 둘다 사용가능
List<String>list = ["apple", "banana"];
// dynamic 타입은 어떤게 올지 모를 때 사용하며, 자바에서의 Object 타입이라고 생각하면 됩니다.
Map<String, dynamic> user = {
"id" : 1,
"username" : "test"
};
void main(){
print(name);
print(num);
print(fNum);
print(list);
print(list[0]);
print(user);
print(user["id"]);
print("유저네임은 " + user["username"]);
// print할 때 + 는 숫자끼리 더하기가 되고, 문자끼리는 결합이 됩니다.
// ${ }를 사용하면 가독성 좋게 사용할 수 있습니다.
// ${ } 안에 내가 필요로 하는 값을 넣으면 출력할 수 있습니다.
print("유저네임은 ${user["username"]}");
print("${name} 입니다.");
}
- print할 때 ( + )는 숫자끼리 더하기가 되고, 문자끼리는 결합이 됩니다.
- ( + ) 대신에 ${ }를 사용하면 가독성 좋게 사용할 수 있습니다.
- ${ } 안에 내가 필요로 하는 값을 넣으면 출력할 수 있습니다.
bool
- bool은 true와 false 값을 가지는 자료형으로 if 조건문과 잘 맞습니다.
// bool 타입
// bool 타입은 if 조건문과 잘 맞습니다.
// true와 false 사용 가능
bool isRunning = true;
void main(){
print(isRunning);
}
Dart 메서드(함수)
기본
// 더하기 함수
add(){
print("더하기 함수입니다.");
}
main(){
add();
}
- add라는 함수를 선언한 뒤 실행해보면 결과가 잘 출력됩니다.
- 반환형을 선언하지 않았지만 dart가 알아서 반환형을 찾아주므로 작동을 잘 합니다.
// 더하기 함수
add(n1, n2){
print("더하기 함수입니다.");
print(n1 + n2);
}
main(){
add(3, 5);
}
- 변수를 선언한 뒤 실행해도 잘 실행됩니다.
- 변수의 자료형을 선언하지 않았지만 dart가 알아서 지정을 해서 작동합니다.
- 단, 반환형과 자료형을 명시적으로 선언해주지 않으면 위험하므로 Type을 넣어주는게 좋습니다.
// 더하기 함수
void add(int n1, int n2){
print("더하기 함수입니다.");
print(n1 + n2);
}
void main(){
add(3, 5);
}
- 하지만 int로 명확하게 지정을 하게 되면, n에 실수가 들어가면 받지를 못합니다.
- 그러나 var을 사용하면 받을 수 있으므로, 자료형을 명확하게 모를때는 var을 사용하는게 좋습니다.
// 더하기 함수
void add(int n1, var n2){
print("더하기 함수입니다.");
print(n1 + n2);
}
void main(){
add(3, 5.5);
}
Dart의 오버로딩
// 더하기 함수
void add({int n1 = 1, var n2 = 1}){
print("더하기 함수입니다.");
print(n1 + n2);
}
// dart는 오버로딩이 되지 않음.
// dart는 중괄호를 사용해서 매개변수를 선택적으로 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
add(n1 : 10);
}
- Java같은 경우는 어떠한 함수의 매개변수가 다를 때 오버로딩이 됩니다.
- Dart는 var를 사용하면 간단하게 해결됩니다.
- 매개변수 선언부를 중괄호로 감싸주면 매개변수를 다 사용하지 않아도 함수를 사용할 수 있습니다.
- Dart가 오버로딩을 대체하는 방법입니다.
// 더하기 함수
add({int n1 = 1, var n2 = 1}){
print("더하기 함수입니다.");
// print(n1 + n2);
return n1 + n2;
}
// dart는 오버로딩이 되지 않음.
// dart는 선택적 매개변수를 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
var result = add(n1 : 10, n2 : 20.5);
print(result);
}
Function
// 더하기 함수
// Function 타입을 사용해서 변수에 담을 수도 있습니다.
Function add = ({int n1 = 1, var n2 = 1}){
print("더하기 함수입니다.");
// print(n1 + n2);
return n1 + n2;
};
// dart는 오버로딩이 되지 않음.
// dart는 선택적 매개변수를 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
var result = add(n1 : 10, n2 : 20.5);
print(result);
}
- Function 타입을 사용해서 메서드를 변수에 담을 수도 있습니다.
// 더하기 함수
// Function 타입을 사용해서 변수에 담을 수도 있습니다.
Function add = ({int n1 = 1, var n2 = 1}){
print("더하기 함수입니다.");
// print(n1 + n2);
return n1 + n2;
};
void hello(Function t) {
t();
}
// dart는 오버로딩이 되지 않음.
// dart는 선택적 매개변수를 사용할 수 있음
// 기본값을 할당할 수 있음
void main(){
hello(add);
}
- Dart는 함수도 함수의 파라미터로 전달이 가능합니다.
var과 dynamic의 차이는?
main() {
// var과 dynamic의 차이는?
// 4번 라인 실행시에 10이 num에 들어갔기 때문에 타입이 고정되어 버립니다.
var num = 10;
num = '안녕';
// 8번 라인 실행시에 20이 sum에 들어갔지만 타입이 고정되지 않습니다.
dynamic sum = 20;
sum = "안녕";
}
조건문
if 조건문
// bool 타입
// bool 타입은 if 조건문과 잘 맞습니다.
bool isRunning = true; // false
void main(){
print(isRunning);
// 기본 조건문
if(isRunning){
print("참입니다.");
} else {
print("거짓입니다.");
}
}
삼항 연산자
- 삼항 연산자의 형식
(String s = 조건 ? 데이터1 : 데이터 2)
- Flutter에서는 일반 조건문보다 삼항 연산자를 더 많이 씁니다.
// bool 타입
// bool 타입은 if 조건문과 잘 맞습니다.
bool isRunning = false; // false
void main(){
print(isRunning);
// 삼항 연산자 (String s = 조건 ? 데이터1 : 데이터 2)
// Flutter에서는 일반 조건문보다 삼항 연산자를 더 많이 씁니다.
// isRunning의 위치에 조건문이 들어갑니다.
String s = isRunning ? '참입니다.' : '거짓입니다';
print("결과 ${s}");
// 기본 조건문
if(isRunning){
print("참입니다.");
} else {
print("거짓입니다.");
}
}
Elvis 연산자는 사용이 안 됨.