Flutter

[Dart] 함수의 파라미터(중괄호, 샾 기호, Required, Named, Optional)

끄적끄적아무거나 2025. 4. 12. 17:11

 

목차

     

     

     

     

    1. Required Positional Parameters (필수 위치 파라미터)

     

    이 파라미터는 함수 정의에 나열된 순서대로 값을 반드시 전달해야 합니다. 기본값을 줄 수 없고, 생략하면 오류가 발생합니다.

     

    void greet(String name, int age) {
      print("Hello, $name! You are $age years old.");
    }
    
    void main() {
      greet("Alice", 30);  // 정상 호출
      // greet("Alice");   // 오류: age 파라미터가 없음
    }

     

     

    • name과 age는 둘 다 순서대로 전달해야 하며 생략할 수 없습니다.
    • 자주 사용하는 일반적인 함수 정의 방식입니다.

     

     

    2. Named Parameters (이름 있는 파라미터)

     

    이 파라미터는 중괄호 {} 안에 정의되며, 이름을 붙여서 값을 전달합니다. 순서와 관계없이 사용할 수 있고, 선택적(optional) 또는 필수(required) 로 설정할 수 있습니다.

     

    void greet({String? name, int? age}) {
      print("Hello, $name! You are $age years old.");
    }
    
    void main() {
      greet(name: "Bob", age: 25);   // 정상 호출
      greet(age: 20, name: "Charlie"); // 순서를 바꿔도 정상
      greet();                        // 모두 생략 가능 (null 출력됨)
    }

     

     

    필수로 만들고 싶을 경우: required 키워드 사용

    void greet({required String name, int age = 0}) {
      print("Hello, $name! You are $age years old.");
    }
    
    void main() {
      greet(name: "David");         // 정상: age는 기본값 사용
      greet(name: "Eve", age: 20);  // 정상
      // greet(age: 20);            // 오류: name은 필수지만 누락됨
    }

     

    • required 키워드를 붙이면 반드시 전달해야 합니다.
    • 선택적인 파라미터는 기본값을 줄 수 있습니다.

     

     

    3. Optional Positional Parameters (선택적 위치 파라미터)

     

    이 파라미터는 대괄호 [] 안에 정의되며, 값을 전달하지 않아도 됩니다. 전달하지 않으면 기본값을 사용하게 됩니다.

     

    void greet(String name, [int age = 0]) {
      print("Hello, $name! You are $age years old.");
    }
    
    void main() {
      greet("Frank", 35);  // 정상 호출
      greet("Grace");      // age는 기본값 0으로 처리
    }