Foggy day

[Dart] 함수 본문

Flutter/Dart 문법

[Dart] 함수

jinhan38 2023. 3. 2. 16:34

 

함수란?

함수는 코드 덩어리를 모아둔 것이라고 생각하면 됩니다. 그리고 모아둔 코드 덩어리를 변수처럼 특정 이름으로 만들어줍니다. 동일한 10줄의 코드를 여러번 사용해야 하는 경우 함수로 선언해둔 이름만 호출함으로써 간편하게 사용할 수 있습니다. 자세한 것은 예제를 보면서 확인하겠습니다. 

 

 

함수에서 중요한 요소는 입력과 반환이 있습니다. 

예제의 add 함수에는 int a와 int b를 입력하도록 만들었고, int를 반환하도록 선언했습니다.

반환 타입은 제일 앞에 선언해주고, 그다음에 이름, 소괄호 안에는 입력받을 변수를 선언해줍니다. 

함수 안에서는 입력한 a와 b를 더해서 return해주고 있습니다.

  /// 더하기 함수
  int add(int a, int b) {
    int age = a + b;
    return age;
  }
  
  // 함수 사용법
  int addValue = add(5, 20);
  print('Method.Method addValue : $addValue'); // 25

 

 

- Optional

다트에서는 함수에 입력할 값들을 다루기가 편합니다.

첫번째 예제의 add함수에서는 함수를 사용할 때 입력값 두개를 반드시 사용해야하지만 입력값을 선택적으로 선언할 수 있습니다. 

addStringOptional 함수는 반환 타입은 String입니다. 입력값으로는 String 타입의 a변수가 하나있습니다. 그리고 중괄호 안에 String b = "빈 값" 이라고 변수를 선언해서 넣어줬습니다. 이러한 형태가 되면 입력값 b는 함수를 사용할 때 입력해도 되고 안 입력해도 됩니다. b를 입력할 경우 b에는 입력된 값이 들어오지만 입력하지 않은 경우 b는 최초에 선언해둔 "빈 값"으로 사용됩니다. 

  String addStringOptional(String a, {String b = "빈 값"}) {
    return "$a$b 잘 부탁드립니다.";
  }
  
  addStringOptional("안녕하세요. "); // 사용 가능 
  
  // Optional로 사용할 때는 어떤 값을 입력할지 지정해줘야 합니다.
  // 그래서 b: "반갑습니다" 의 형태로 사용해야 합니다. 
  String addStringOptionalValue = addStringOptional("안녕하세요. ", b: "반갑습니다.");
  print('Method.Method addStringOptionalValue : $addStringOptionalValue');
  
  
  콘솔
  안녕하세요. 반갑습니다. 잘 부탁드립니다.

 

 

- required

함수의 입력값들을 반드시 필수로 하고싶고, 함수를 사용할 때 입력값의 이름을 보고싶을 때 required 키워드를 사용하면 됩니다.  중괄호에 required를 넣으면 String b 값은 반드시 입력해야합니다. 

  String addStringRequired(String a, {required String b}) {
    return "$a$b 잘 부탁드립니다.";
  }
  
  
  String addStringRequiredValue = addStringRequired("a", b: "b");
  print('Method.Method addStringRequiredValue : $addStringRequiredValue');
  
  
  콘솔
  ab 잘 부탁드립니다.

 

 

- lambda

Dart는 람다 문법도 지원합니다. 람다문법은 기본적은 함수의 기능과 같지만 형태만 약간 다릅니다.

반환값, 함수명, 입력값들은 똑같이 만들어줍니다.

그리고 중괄호 대신 => 기호를 사용해줍니다. Fat Arrow라고도 불립니다. 

그리고 나서 return할 값들을 입력해주면 됩니다.

사용법은 기본 함수랑 동일합니다. 

String lambda(String a, {required String b, bool? boolean}) => "$a $a $boolean";

String la = lambda("a", b: "b");
print('Method.Method la : $la');
String la2 = lambda("a", b: "b", boolean: true);
print('Method.Method la2 : $la2');


콘솔  
Method.Method la : a a null
Method.Method la2 : a a true

이때 bool? boolean으로 선언해준 부분이 있습니다. boolean이라는 값을 입력하지 않으면 null로 세팅되는데 null에 관해서는 추후 다시 다루겠습니다. 

'Flutter > Dart 문법' 카테고리의 다른 글

[Dart] 클래스(class)에 대하여 - 1  (0) 2023.03.02
[Dart] 알고 있으면 좋은 문법들  (0) 2023.03.02
[Dart] 반복문(for문)  (0) 2023.03.02
[Dart] Collection - List, Map, Set  (0) 2023.03.02
[Dart] 조건문(conditional)  (0) 2023.03.02