인프런 커뮤니티 질문&답변

안일호님의 프로필 이미지
안일호

작성한 질문수

처음하는 플러터(Flutter) 기초부터 실전까지 [풀스택 Part4] (쉽고 견고하게 단계별로 다양한 프로젝트까지)

Dart 함수

파라미터 질문있습니다~

해결된 질문

작성

·

298

0

Q1. Dart 언어에서 Optional parameters에도 Name을 붙여 파라미터 값 대입 시 순서를 다르게 할 수 있나요?

void function1(int a, [int b]) {..}
// b에 이름을 붙여 function1을 호출할 수 있는가

 

Q2. 하나의 함수에 Optional parameters, Named parameters 둘 다 쓴다고 하면, 작성 순서는 어떻게 되나요?

void function2(int a, {int? b}, [int c]) {..}
// 둘을 같이 쓸 일이 있는지는 모르겠지만 궁금합니다

답변 1

1

안녕하세요. 답변도우미입니다.

Optional parameters 는 [] 를 적용한 것을 의미하고, Named parameters 은 {} 를 적용한 것을 의미한 것을 말씀하시는 것이죠. 이렇게 이야기드린 이유는 Optional parameters 는 결국 해당 인자값을 넣어도 되고 안넣어도 되는 기능을 가지고 있는데요. 이 기능적 측면을 고려한 후, 답변을 드리면요.

Q1: 넵 가능합니다. 강의에서 설명드린 Named parameters 에서, required 를 적용하지 않은 케이스를Named Optional Parameters 라고도 부를 수 있는데요. 이 경우 인자값을 반드시 넣지 않아도 되고, 인자명으로 인자값을 선언하기 때문에, 함수 호출시, 인자값 적용 순서를 달리해도 됩니다. 즉 강의의 Optional Parameter 의 기능적 측면을 생각한다면, 이와 같이 활용하실 수 있습니다.

void main() { 
   test_param(123); # s1, s2 둘다 안넣어도 되었습니다~
   test_param(123,s1:'hello'); # s2 인자를 안넣어도 되었고요~
   test_param(123,s2:'hello',s1:'world');  # 순서도 바꾸었고요~
}  
test_param(int n1,{String? s1,String? s2}) { 
  print(n1); 
  print(s1);
  print(s2);
}  

Q2: Optional parameters 는 [] 를 적용한 것을 의미하고, Named parameters 은 {} 를 적용한 것이라는 측면으로 봤을 때는, [], {} 를 동시에 쓰는 것은 허용하지 않습니다. 다만 위의 Named Parameters 의 required 를 붙이거나, 안붙이거나 하는 기능을 사용해서, Optional Parameter 의 기능적 측면은 Named Parameters 를 사용해서, 지원이 됩니다.

감사합니다.

 

안일호님의 프로필 이미지
안일호
질문자

찰떡같은 답변 감사합니다!!

안일호님의 프로필 이미지
안일호

작성한 질문수

질문하기