생성자.. 이 표현은.. 뭐야.. 아무래도 적응이 안돼..
나중에서야 named argument 가 적용된 함수 형태라는 것을 알게 됐다. 유레카!
argument
: '인수' 라고 번역하는 듯
: 함수에 전달하는 값 (함수 내에서 사용될 값)
named argument 는?
: 함수에 전달하는 값은 값인대, 값별로 이름을 붙여 놨다는 의미
이름을 붙여놨기 때문에,
호출할 때 '이름 : 값' 의 형태로 사용해주면
어떤 변수에 어떤 값을 전달하려는 의도인지 알수 있게 된다.
따라서 전달하는 순서와 갯수가 달라져도 된다. 함수가 알아들을 수 있어~~~
덧붙여서.. 인수들을 { } 으로 묶어두도록 했다. 나름의 이유가 있을 듯한대 그건 아직 모르겠음.
여튼 named argument 를 사용하는 함수의 형식은 다음과 같다.
리턴타입 함수명 ( { 이름1:값1, .. ,이름n:값n} ) { 변수와 기능 }
예시를...
int add2 ({int a, int b}) {
return a+b;
}
// Error: The parameter 'a' can't have a value of 'null' because of its type, but the implicit default value is 'null'.
인수가 null 일 수도 있는거 아니냐고 따지네
→ 인수타입에 ? 를 붙여서 null 일수도 있어 라고 알려주고
int add3 ({int? a, int? b}) {
return a+b;
}
// Error: The operator '+' can't be unconditionally invoked because the receiver can be 'null'.
null 이면 더할 수 없다고 따지고
→ 켁.. 더할 수 없으면 더하지 마... ( a + 삭제)
int add4 ({int? a, int? b}) {
return b;
}
// Error: A value of type 'int?' can't be returned from the method 'add4' because it has a return type of 'int'.
반환되는 값이 null일 수 도 있는거 아냐?
→ 그래.. null 값을 받을 수 있으니... null 값으로 반환될 수 도 있겠네.
반환 타입에 ? 을 붙여서 null 일수도 있다고 알려주고
int? add5 ({int? a, int? b}) {
return b;
}
이제 만든 함수를 호출해 본다.
void main(){
print (add5(b:5));
}
결론적으로 더하는 기능을 수행하지 못하는 함수가 되어버렸지만 named argument 는 이렇게 사용한다는 교훈을...
(이런 경우에는 named argument는 안되겠음)