728x90
함수
함수 사용의 장점
- 코드 중복을 줄인다.
- 코드가 더 명료해진다.
- 코드의 재사용성이 좋아진다.
- 복잡한 문제를 간단한 부분으로 쪼갤 수 있다.
- 정보를 숨긴다.
main() 함수
main() 함수는 프로그램의 시작점, 진입점 함수이다.
이름 있는 일반 함수 정의
int add(int x, int y) {
return x + y;
}
화살표(Arrow) 함수
화살표 함수는 함수의 몸통(body)이 하나의 수식(expression)인 경우 중괄호({})와 return 키워드를 생략하고 간단히 쓸 수 있는 표기법이다.
int add(int x, int y) => x + y;
필수 매개변수와 옵션 매개변수
필수 매개변수
단순히 매개변수에 어떤 괄호도 치지 않고 그냥 나열하면 필수 매개변수이다.
옵션 위치(Positional) 매개변수
매개변수의 목록을 대괄호([])로 감싸면 위치 옵션 매개변수가 된다.
파이썬의 *args 아규먼트와 비슷하다.
필수 매개변수와 옵션 매개변수를 같이 쓰려면 필수 매개변수가 먼저 와야 한다.
옵션 매개변수의 기본값은 = 대입으로 초기화한다. 초기화하지 않고 완전히 옵션으로 두려면 널 허용 ? 변수를 만든다.
위치 매개변수로도 옵션 위치 매개변수의 기능을 활용해 선택적으로 넘겨줄 수 있지만 호출하는 측에서 매번 위치를 신경써야 하고 값만 있으면 가독성이 떨어진다.
void main() {
print(pow(2, 3)); // x=2, y=3으로 2^3=8 (y값을 전달)
print(pow(2, 2)); // x=2, y=2로 2^2=4 (y값을 전달했지만 기본값이 2이므로 결과 차이는 없음)
print(pow(3)); // x=3로 3^2=9 (y값을 전달하지 않으므로 기본값 2로 초기화)
}
int pow(int x, [int y = 2]) {
int r = 1;
for (int i = 0; i < y; i++) {
r *= x;
}
return r;
}
결과는 아래와 같다:
8
4
9
옵션 이름(Named) 매개변수
매개변수의 목록을 중괄호({})로 감싸면 이름 옵션 매개변수가 된다.
파이썬의 **kwargs 키워드 아규먼트와 비슷하다.
필수 매개변수와 옵션 매개변수를 같이 쓰려면 필수 매개변수가 먼저 와야 한다.
옵션 매개변수의 기본값은 = 대입으로 초기화한다. 초기화하지 않고 완전히 옵션으로 두려면 널 허용 ? 변수를 만든다.
이름 있는 매개변수의 장점
- 값을 넘겨줄 때 매개변수 이름을 같이 쓰므로 가독성이 좋다.
- 매개변수의 넘겨주는 위치순서를 신경 쓸 필요가 없어 더 편리하다.
- 중간에 먼저 선언된 선택적 매개변수를 빼먹어도 기본값으로 올바르게 처리된다.
void main() {
const name = "John Doe";
const occupation = "carpenter";
info(name, occupation: occupation); // John Doe is a carpenter
info(name); // John Doe is a unemployed
}
void info(String name, {String occupation = 'unemployed'}) {
print("$name is a $occupation");
}
결과는 아래와 같다:
CopyJohn Doe is a carpenter
John Doe is a unemployed
728x90
LIST
'Flutter' 카테고리의 다른 글
Flutter - pubspec.yaml (1) | 2023.11.02 |
---|---|
Flutter - 클래스 선언과 인스턴스 생성 (2) | 2023.11.02 |
Flutter - 타입 검증 연산자 (1) | 2023.11.02 |
Flutter - NullAware (4) | 2023.11.02 |
Flutter - 컬렉션 타입 (2) | 2023.11.01 |