본문 바로가기
프로그래밍/Flutter & Dart

[Dart] Optional Parameters (Positional, Named)

by 소꿍 2021. 11. 1.

Dart에서 optional parameters를 정하는 2가지 방식이 있다. (positional과 named)

 

Optional parameters는 주어진 function을 호출할 때 지정할 필요가 없는 변수이다.

optional parameters는 반드시 required parameter 다음에 선언되어야 한다.

그리고 optional parameter에는 기본값을 사용할 수 있으며, 이는 함수 호출 시 변수를 지정하지 않을 경우 사용된다.

 

 

Positional parameters in Dart

Dart에서 Square brackets [] 은 optional, positional parameter를 명시할 때 사용된다.

readFile(String name, [String mode, String charset = 'utf-8']) {
  // ...
}

위 선언에서 'name'은 항상 필수값(required)이고, 반면 'mode'와 'charset'은 optional이다.

또한 'charset'은 값이 지정되지 않으면 기본값으로 'utf-8'을 갖는다.

파일의 'charset'을 지정하려는 경우 'mode'는 생략할 수 없기 때문에 이런 parameter는 positional이다.

 

readFile('hello.dart');
readFile('hello.dart', 'w+');
readFile('hello.dart', 'w+', 'iso8859-1');

추가로 parameter의 이름은 오직 function을 선언하는 level에서만 지정되고, 표시된다.

함수 호출자(caller)는 그 parameter에 해당하는 위치를 알아야만 한다. 이 때문에 코드가 약간 읽기 어려워진다.

 

 

Named parameters in Dart

Dart에서 curly brackets {} 은 optional, named parameter를 지정하는 데 사용한다.

readFile(String name, {String mode, String charset = 'utf-8'}) {
  // empty
}

 

named parameter는 이름으로 참조되고, 이는 function이 호출될 때 function 선언과 다른 순서로 사용될 수 있다는 걸 의미한다.

readFile('hello.dart');
readFile('hello.dart', mode: 'w+');
readFile('hello.dart', charset: 'iso8859-1');
readFile('hello.dart', charset: 'iso8859-1', mode: 'w+');
readFile('hello.dart', mode: 'w+', charset: 'iso8859-1');

 


 

댓글