[Flutter/Dart] 함수, 플러터 함수

houndhollis·2023년 11월 6일
1
post-thumbnail

월요일 오늘은 되게 날씨가 추웠다,

함수

1.포지셔널 파라미터

일반적으로 함수를 생각하면 이렇게 표현 할수 있다.
파라미터 - 매개변수 - 아규먼트 다 같은 뜻,

void main() {
  addNamed(1,3,5);
  // 1,3,5
} 

void addNamed(int x, int y, int z) {
  print('$x $y $z');
}

위에 함수 처럼 자리값과 상관없이 x, y, z 값을 넣어주면 된다. 출력 값으로 1,3,5 가 나오는 것을 볼수 있다.
여기서 중요한 포인트는

자리값의 상관없이, 파라미터의 순서가 곧 함수 내에서 파라미터 순서 이기 때문에 positional parameter 라고 한다.

2.옵셔널 파라미터
파라미터가 있어도 되고~ 없어도 되는 , 파라미터 에다가 대괄호를 넣어주면 된다.

void main() {
  addNumbers(1);
} 

addNumbers(int x, [int? y, int? z]) {
  print(x);
  print(y);
  print(z);
  int sum = x + y + z;
}

위에 코드처럼 작성하면 에러가 나는 것을 볼수 있다. int? y,z 값은 null 이기 때문에 연산이 불가능 하다 이럴 경우

  • addNumbers(int x, [int y = 10, int z = 20])

위에 처럼 ? 를 제거한 후 기본값을 넣어주면 된다. 이렇게 진행하면

void main() {
  addNumbers(1);
} 

addNumbers(int x, [int y = 10, int z = 20]) {
  print(x); // 1
  print(y); // 10
  print(z); // 20
  int sum = x + y + z;
  print(sum); // 31
}

더한 값이 잘 출력 되는것을 볼수있다.

3.네임드 파라미터
순서가 중요하지 않은 파라미터 이다. 예제로 보겠다.

void main() {
  addNumbers(x : 10, y : 15, z : 20);
} 

addNumbers({
  required int x,
  required int y,
  required int z,
}) {
  int result = x + y + z;
  print(result);
}

함수 파라미터 넣는 곳에 required 로 타입 + 파라미터 값으로 표기를 해준다 함수 호출 부분에서도 named에 맞게 넣어줘야 한다.
addNumbers(x : 10, z : 15, y : 20);

z와 y의 위치를 바뀌어도 순서가 중요하지 않은 named parameter에서는 상관이 없다.

마지막! 그러면 전부다 같이 쓸수는 없을까?

void main() {
  final int result = addNumber(1, y: 3);
  print(result);
} 

int addNumber(int x,{
  required int y,
  int z = 20
}) => x + y + z;

함수 부분에서 대괄호 안에 포지셔널은 밖으로 뺴주고 required 로 작성한 것은 named가 되는것을 볼수 있으며, z 값 같은 경우 옵셔널로 넣지 않으면, 기본값으로 대체되는 것을 볼수있다.

위에 개념은 클래스로 가서도 중요하기 때문에, 조금은 학습 해놓으면 좋은거 같다. 그럼 다음..시간에 20000!

profile
한 줄 소개

0개의 댓글