[Dart] 3. Functions

2024. 12. 19. 13:37·Flutter

함수 선언

void greeting(String name) {
    print('Hello my name is $name!');

// 1
String greetingString(String name) {
    return 'Hello my name is $name';
}
// 2
String greetingString(String name) => "Hello my name is $name";

}
void main() {
    greeting('gwanson');
    print(greetingString('gwanson'));
}

리턴값이 없는 함수는 void 로 선언을 하고, 리턴값이 존재하는 함수는 해당하는 타입으로 선언합니다.(예: String,int )

named parameter

String greeting({
    required String name,
    int age = 99,
    String? country,
    }) {
        return 'Hello $name, you are $age, and you come from $country';
}

void main() {
    print(greeting(
        age: 26,
        name: 'gwanson',
    ));
}
// 출력
// Hello gwanson, you are 26, and you come from null

Dart의 함수 파라미터는 named argument를 지원합니다.
named parameter를 선언하는 방법은 아주 간단합니다. 파라미터에 {} 를 씌워주는 것만으로 함수를 호출할 때 파라미터의 순서와 관계없이 호출할 수 있게 됩니다.

위의 greeting 함수는 총 3가지의 방법으로 파라미터를 선언한 것을 볼 수 있습니다.

  1. required
    required 는 해당 파라미터는 함수가 동작할 때 필수로 존재해야하는 것을 뜻하는 키워드입니다.
  2. default value
    int age 를 보면 기본 값이 99로 선언되어 있습니다. 이는 사용자가 age에 아무런 값을 할당하지 않으면 기본적으로 99란 값이 들어가는 것을 의미합니다.
  3. null safety
    파라미터 자료형에 ? 를 붙여서 해당 값이 입력되지 않으면 null값으로 처리될 수 있게 해줍니다.

Optional Positional Parameters

함수의 Positional Parameter 는 순서에 맞춰서 입력해야합니다. named parameter를 사용하지 않는 함수의 파라미터에는 Optional Positional Parameter를 사용하여 처리할 수 있습니다.

String greeting(String name, int age, [String? country = 'korea']) => return 'Hello, my name is $name, I'm $age years old from $country';

void main() {
    print(greeting('gwanson', 26));
}
// 출력
// Hello, my name is gwanson, I'm 26 years old from korea

위의 코드처럼 main에서 greeting을 호출했을 때, country값을 넣지 않았음에도 korea가 출력되는 것을 볼 수 있습니다.

함수의 파라미터에 [] 를 감싸주고 ? 를 자료형에 붙여주면 옵셔널 파라미터가 됩니다.

QQ Operator

??

?? 오퍼레이터는 swift의 오퍼레이터와 유사한 역할을 합니다.

String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';

void main() {
    capitalizeName('gwanson');
    capitalizeName(null);
}
// 출력
// GWANSON
// ANON

left ?? right 라고 예시를 들었을 때, left가 true면 left의 값을 return하고, false면 right의 값을 return 합니다.

??=

??= 오퍼레이터는 해당 값이 null 이면 값을 할당해주는 오퍼레이터입니다.

String? name;
name ??= 'gwanson';
print(name);

// 출력
// gwanson

Typedef

Dart의 Typedef는 swift의 typealias와 유사한 기능을 합니다.
어떠한 자료형의 이름을 직접 선언해줄 수 있습니다.

'Flutter' 카테고리의 다른 글
  • [Dart] 4. Classes
  • [Dart] 2. Data Types
  • [Dart] 1. Variables
GwanSon
GwanSon
버그는 도전, 코드는 해결. 열정있는 개발을 하자.
  • GwanSon
    관슨의 개발일지
    GwanSon
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • iOS (3)
      • swift (16)
      • UIKit (0)
      • swiftUI (2)
      • 알고리즘 (8)
      • CS (8)
      • 면접 (11)
      • Flutter (4)
      • 회고 (2)
      • 잡담 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    챌린지
    boj
    Firebase
    tuist
    모듈화
    토스
    FirebaseAuth
    부스트캠프
    후기
    네이버 부스트캠프 후기
    fatal error
    Swift
    2025 토스 Next
    백준
    네이버 부스트캠프
    부스트캠프 10기
    ios
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
GwanSon
[Dart] 3. Functions
상단으로

티스토리툴바