[Flutter/Dart] 함수(function)

keemeesuu·2022년 10월 29일
0

Flutter > Dart

목록 보기
2/4

Parameter? Argument?

  • Parameter(매개변수)는 함수 혹은 메서드 정의에서 나열되는 변수 명입니다.
  • 반면 Argument(전달, 인자값)는 함수 혹은 메서드를 호출할 때, 전달 혹은 입력되는 실제 값입니다.
  • Argument의 실체는 변수이고 Argument의 실체는 값입니다.

void main() {
  // argument - 전달, 인자값. (10, 20, 30);
  addNumber(10, 20, 30);
}

// !함수설명 적는 습관 증요
// 세개의 숫자(x, y, z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter - 매개변수. (x, y, z)
// positional parameter - 순서가 중요한 파라미터
addNumber(int x, int y, int z) {
  int sum = x + y + z;
  
  print('x : $x');
  print('y : $x');
  print('z : $x');
  
  if(sum % 2 == 0) {
    print('짝수입니다.');
  } else {
    print('홀수입니다.');
  }
}

optional parameter / named parameter

optional 뜻은 '선택적'

// optional parameter = 있어도 되고 없어도 되는 파라미터
// [] 표시
// 기본값 지정 가능
addNumber(int x, [int? y, int? z]) { }
addNumber(int x, [int y = 10, int z = 20]) { }
void main() {
  addNumber(x: 10, y: 30, z: 40);
  addNumber(y: 10, x: 30, z: 40, n: 10);
}

// named parameter - 이름이 있는 파라미터 (순서가 중요하지 않다.)
// {} 표시
addNumber({
  required int x,
  required int y,
  required int z,
  // optional parameter 사용방법
  int n = 10,
}) {
  int sum = x + y + z + n;
  print(sum);
}

void 함수

void 는 return value(리턴 값)가 없는 함수인 경우 사용한다.

// void - 공허
void main() {
  hello();
}

void hello(){
  print('hello world');
}

return value가 있는 함수는 return type을 지정한다.

void main() {
  String test = hello();
  print(test);
}

String hello(){
  String txt = 'hello world';

  return txt;
}

arrow 함수

함수를 간단하게 표현할 수 있다.

void main() {
  int result = addNumbers(10, 10, 10);
  print(result);
  
  int resultArrow = addNumbers(10, 10, 10);
  print(resultArrow);
}

int addNumbers(int x, int y, int z){
  return x + y + z;
}

int addNumbersArrow(int x, int y, int z) => x + y + z; 

typedef

함수를 편리하게 사용할 수 있는 기능 중 하나.
typedef 에 선언된 시그니처에 부합하는 모든 함수들을 사용할 수 있다.

아래는 이해를 돕기위한 설명.(이렇게 사용하지는 않는다.)

void main() {
  
  // 3. Operation type 선언 = typedef 선언
  Operation operation = add;
  
  // add 함수가 실행된다.
  int result = operation(10, 20, 30);
  print(result);
  // =30
  
  // 4. Operation 재선언
  operation = subtract;
  
  // subtract 함수가 실행된다.
  int result2 = operation(10, 20, 30);
  print(result2);
  // =40
  
  
}
// 1. typedef 선언
// signature - 리턴타입과 파라미터의 형태
typedef Operation = int Function(int x, int y, int z);


// 2. signature 에 완전 부합하는 함수 두개 선언(add, subtract)

// 더하기
int add(int x, int y, int z) => x + y + z;

// 빼기
int subtract(int x, int y, int z) => x - y - z;

아래는 실제로 사용하는 방법 중 하나.

void main() {
  
  // 4. typedef 함수 사용하기
  int result = calculate(10, 20, 30, add);
  print(result);
  // = 60
  
  int result2 = calculate(30, 10, 10, subtract);
  print(result2);
  // = 10
  
}

// 1. typedef 선언
// signature - 리턴타입과 파라미터의 형태
typedef Operation = int Function(int x, int y, int z);


// 2. signature 에 완전 부합하는 함수 두개 선언(add, subtract)

// 더하기
int add(int x, int y, int z) => x + y + z;

// 빼기
int subtract(int x, int y, int z) => x - y - z;

// 3. 계산
int calculate(int x, int y, int z, Operation operation) {
  return operation(x, y, z);
}
profile
개발관련 정리하고 기록하는 블로그 🦦

0개의 댓글