Flutter - 함수

2023. 11. 2. 11:34·Flutter
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
'Flutter' 카테고리의 다른 글
  • Flutter - pubspec.yaml
  • Flutter - 클래스 선언과 인스턴스 생성
  • Flutter - 타입 검증 연산자
  • Flutter - NullAware
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (219) N
      • Flutter (70)
      • Android (9)
      • Swift (5)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (107) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    Flutter
    오늘의 이슈
    기술
    개발
    앱 개발
    앱
    이슈
    오늘의 기술 뉴스
    뉴스
    오늘의 뉴스
    오늘의 개발 뉴스
    기술 뉴스
    개발 뉴스
    DART
    앱개발
    뉴스 모음
    Dart 기초
    react
    플러터
    개발 이슈
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Flutter - 함수
상단으로

티스토리툴바