본문 바로가기

Hello App/Dart

Dart_기초예제 4

20230513

 


오늘은 Dart의 Funtion에 대해서 알아보자.

 

14. Defining a Function

14-1 void?

 

위와 같이 sayHello 라는 함수를 선언했다.

 

하지만 항상 void라는 단어가 따라 붙는다.

 

void해당 함수가 아무것도 return하지 않는다는 뜻이다.

 

따라서 위와 같이

void를 문자열로 return할 경우

error가 발생한다.

 

 

만약 return을 받고 싶다면

위와 같이 void 대신하여 넣어주면 된다.

 

 

14-2 only main()?

 

또한 꼭 main함수 안에 선언할 필요가 없다.

위와 같이

main 함수에서

위에서 선언한 함수를 활용하여

출력할 수 있다.

 

14-3 fat arrow syntax

 

fat arrow syntax

기호는 => 를 뜻하고

 

위와 같이 실행되고 곧바로 return하는 경우

 

함수 선언시 =>로

return{ }를 대체할 수 있다.

 

가장 좋은 예로

계산기 어플을 만들 때 활용 가능한

연산 함수를 선언할 때 유용하다.

 


15.  Named Parameters

 

위와 같이 sayHi라는 함수는

name, age, country를

positinal 파라미터로 받는다.

 

앞서 본것 처럼 main 함수에서

위의 선언한 함수를 사용하여

파라미터를 직접 넣어서 출력할 수 있다.

 

 

위와 같이named parameter를 사용하여출력하고 싶을 때는

 

위의 선언한 함수의 파라미터

중괄호 { }를 넣어주면 된다.

 

하지만 여기서 Dart는 의문을 제기한다.

'만약 위의 파라미터가 전부 안오면 어떻게 할것이냐?'

 

앞서 배운것을 적용하면

' 너 null safety 문제를 어떻게 해결 할것이냐? '의 문제이다.

 

여기서 2가지 방법이 있다.

 

1.  Named Parameter Default 정해주기

 

위와 같이 애초에 파라미터에

직접 default 값을 정의해주는 방법이 있다.

 

이렇게 하면

위와 같이 sayHi 함수는 name만 받았지만

출력에는 모든 파라미터가 적용되어

출력되는것을 확인할 수 있다.

 

 

2. Required

 

두 번째 문제는

바로 실질적인 문제에서 나온다.

 

우리는 을 만들기 위해 이 언어를 배우고 있고

default 값이란 정말 위험한 파라미터이다.

 

우리는 고객의 정보를 받아야 하기 때문이다.

 

이때 사용하는게 required이다.

 

위와 같이 선언한 함수의 파라미터 앞에

required를 붙여주면

 

반드시 호출 할때

위의 파라미터를 알려줘야 한다.

 

그럼 위와 같이 원하는 출력을 볼 수 있다.


16.  Optional Positional Parameters

 

앞서 배웠던 함수 정의에서

여러 파라미터중

특정 파라미터만 required 하지 않게 하는게

 

바로 Optional Positional Parameter이다.

 

위와 같이 country라는 파라미터를

대괄호 [ ] 로 감싸주고

null safety?를 사용하여 null safety를 방지해주고

default 값을 정의해줄 수 있다.

 

 


17.  QQ Operator ?? & ??=

이름을 대문자로 바꿔주는 함수를 선언하고

이를 null 값도 받을 수 있게 만들어 보자.

우리가 배웠던대로 ?null safety를 줘서

선언하면 된다고 생각했겠지만

 

toUpperCase()라는 기본 내장 method

그렇게 생각하지 않는다.

 

null이 올지도 모르는데

무조건 대문자로 바꿀 수 없기 때문이다.

 

이를 해결 하는 방법은 아래와 같다.

 

1. if문을 사용하여 처리

첫 번째 방법은if 문을 활용하는 방법이다.

 

위와 같이 null인 경우의 returnnull이 아닌 경우return을 주면 된다.

 

이를 짧게도 만들 수 있다.

 

 

2. 연산자를 활용

위와 같이 fat arrow를 활용하여name이 null과 같지 않다면 toUpperCase()그렇지 않으면 ( : ) 'JM'을 return

 

이마저도 짧게 만들고 싶다면이 경우에는 QQ Operator를 활용할 수 있다.

 

 

3. QQ Operator( ?? )를 활용

QQ Operator는 쉽게 설명하자면

 

A ?? B 의 경우

 

A = null이면 B를 returnA != null 이면 A를 return

 

하지만 위의 경우toUpperCase()null safety가 필요하므로 name?로 해준다.


💡  ??=  (QQ equals,  QQ Assignment Operator)

 

QQ equals 혹은 QQ Assignment Operator로 불리는 이 녀석은

 

좌항의 변수가 null일 경우 자주 사용된다.

 

위와 같이 myname은 null일 수 있게 선언해준 다음

??= 을 사용하여null일 경우 'NA'로 return

null일 경우 'JM'으로 return 하게끔 정의할 수 있다.

그러므로 두 번째의 'JM'을 return 받는 코드는

절대 실행될 일이 없다.

 


18. Typedef

 

Typedef

자료형이 헷갈릴때 도움이 될 alias을 만드는 방법이다.

 

우선 int로 이루어진 List

역순으로 바꿔주는 함수를 선언한다.

 

그리고 위와 같이 typedef를 통해

아래 선언된 함수의 인자에 맞는

변수를 선언할 수 있다.

 

그리고 위와 같이

Datatype 자리에

위에서 선언한 typedef를 넣어줄 수 있다.

 

main()에서

int로 이루어진 List를 인자값으로 주고

프린트 하면?

위와 같이 정상적으로 출력된다.

 

 

 

💡 Map의 typedef

 

위와 같이 Map을 활용해서

typedef를 선언하고

 

main()에서

출력 시킬 수 있다.

 

 

'Hello App > Dart' 카테고리의 다른 글

Dart _ 기초 예제 5  (0) 2023.05.15
Dart_기초 예제3  (0) 2023.05.12
Dart_기초예제2  (0) 2023.05.11
Dart_특징, 기초 예제  (1) 2023.05.10
VScode에서 Dart를 사용하기 위한 준비 - 윈도우  (0) 2023.05.09