해결된 질문
작성
·
299
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 를 사용해서, 지원이 됩니다.
감사합니다.
찰떡같은 답변 감사합니다!!