달달한 스토리

728x90
반응형

 

출처 책 (처음 배우는 플러터 - 유동환)

 

오늘 알아볼 것은 flutter에서 사용하는 Dart의 장점 중에 장점 역할을

 

맡고 있는 녀석을  소개한다.

 

선택 인자와 이름 있는 인자이다!

 

1. 선택인자(positional optional parameter)

 

이름이 상당히 깁니다.

 

선택인자는 자신이 선택할 수 있는 인자입니다.

 

한 마디로 이 인자를 선택해도 되고, 안 해도 되는 것입니다.

 

예제를 보면서 살펴 보겠습니다.

 

//선택인자(positional optional parameter)

int num1 = 100;
int num2 = addNumber(100)  //inc = 1 대입
int num3 = addNumber(100, 20) //inc = 20 대입

// 넣은 인자 값들을 더해서 int 값으로 반환하는 메서드
int addNumber(int num, [inc = 1]) => num + inc;

여기서 선택 인자의 기능을 알 수 있다.

 

우선 첫 번째로 num1을 출력하면 당연히 그대로 100이 나올 것이다.

 

그렇다면 num2는 무엇이 나올까?

 

num2는 101이 나올 것이다. 

 

이유를 살펴보자.

 

addNumber안에 파라미터 값 중에서

 

int num은 우리가 넣은 100이라는 숫자가 나온다.

 

그렇다면 [inc = 1]은 무엇일까?

 

위에 의미는 inc값을 넣으면 inc값이 출력이 되지만, 넣지 않으면 1로 반환할 것이라는 뜻이다.

 

그렇다. 이것이 선택 인자이다.

 

내가 선택해서 다른 값을 넣으면 그 값이 출력되지만,

 

내가 값을 넣지 않아도 기본 값이 출력이 되는 것이다.

 

그렇다면 num3는 무엇이 나올까? 

 

inc의 새로운 값 20을 넣어주었으므로, 값은

 

100 + 20 = 120이 출력이 될 것이다.

 

 

2. 이름 있는 인자(named optional parameter)

 

이름 있는 인자는 선택 인자와 비슷한 면이 있긴 하지만,

 

이름 있는 인자는 자신이 선택한 인자에만 값을 넣을 수 있습니다.

 

아래 예시를 봅시다.

 

//이름 있는 인자(named optional parameter)
String http1 = getHttp(url: 'http://naver.com', port: 80);
String http2 = getHttp(url: 'http://naver.com');

String getHttp({String url, int port}){
	return 'get http from $url, port = $port'
}

print(http1);
print(http2);

이런 식으로 쓴다고 가정해보자.

 

http1을 출력하면 어떤 값이 나올까?

 

url 값과 port 값을 둘 다 입력해 주었기 때문에,

 

get http from http://naver.com, port = 80이 나온다. 

 

그렇다면 http2를 출력하면 무엇이 나올까?

 

url값만 넣어주었기 때문에

 

get http from http://naver.com, port = null 

 

위에 처럼 null값이 그대로 출력되었을 것이다.

 

{} 이 브래킷 사이에 들어 있는 인자는 넣어도 되고 안 넣어도 되는 것이다.

 

더 응용해서 

 

@required라는 어노테이션을 인자 앞에다가 넣어주면,

 

필수 값으로 인지 하여, 이 값은 필수라고 지정해 줄 수 있다.

 

String getHttp({@required String url, int port}){ //여기서 url 값을 필수적으로 넣어주어야 한다.
	return 'get http from $url, port = $port'
}

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading