void main() {
var author = "김대성" // 형 추론
String stringValue = "문자열"
int intValue = 2;
bool booleanValue = false;
}
void main() {
var sum = 0;
for(var i = 0; i<1000; i++){
sum+=i;
}
print(sum); // 499500
}
반환타입 함수이름(매개변수1, 매개변수2, ...) {
// 비즈니스 로직 구현부
return 반환값
}
반환타입 : 반환하는 값의 타입을 정의, 반환값이 없으면 void
함수이름 : 비즈니스 로직을 대표할수 있는 명확한 이름
매개변수 : 함수가 입력받는 값
4. 로직 : 함수가 수행할 작업
5. 반환값 : 함수가 작업을 완료한 후 함수를 호출한 곳으로 돌려주는 값
int sum(int a, int b) {
int sum = a + b;
return sum;
}
// 중괄호를 넣지 않으면 positional parameter
void main() {
int result = sum(1, 2);
print(result); // 3
}
int sum({required int a, required int b}) {
int sum = a + b;
return sum;
}
// 중괄호를 넣으면 Named parameter, 보다 명확!
void main() {
int result = sum(a : 1, b :2);
print(result); // 3
}
int sum({required int a, required int b, int? c}) {
int sum = a + b + (c ?? 0);
return sum;
}
// Optional parameter
void main() {
int result = sum(a: 1, b: 2);
int result2 = sum(a: 1, b: 2, c: 3);
print(result); // 3
print(result2); // 6
}
void main() {
int number = 3;
if (number > 5) {
print("5보다 큼");
} else {
print("5보다 크지 않다");
}
}
void main() {
int number = 3;
switch (number) {
case 1:
print(1);
break;
case 2:
print(2);
break;
case 3:
print(3);
break;
default:
print("1,2,3 다 아님");
}
}
동기 방식에서는 작업이 순차적으로 처리되는 것, 하나의 작업이 끝나야 다음 작업이 진행
void main() {
print('작업 1 시작');
performTask();
print('작업 1 완료');
}
void performTask() {
print('작업 2 실행');
}
작업을 병렬적으로 처리 가능, 동시에 다음 작업을 할 수가 있다.
void main() {
print('작업 1 시작');
performTask();
print('작업 1 완료');
}
Future<void> performTask() async {
await Future.delayed(Duration(seconds: 2)); // 2초 뒤
print('작업 2 실행');
}
작업 1 시작
작업 1 완료
작업 2 실행
// 비동기를 동기처럼 처리
void main() async {
print('작업 1 시작');
await performTask();
print('작업 1 완료');
}
Future<void> performTask() async {
await Future.delayed(Duration(seconds: 2));
print('작업 2 실행');
}
작업 1 시작
작업 2 실행
작업 1 완료