우당탕탕 무작정 앱 개발하기

일반인의 Flutter 앱개발 2. Dart(함수)

간다간다숑간다 2022. 10. 3. 00:02
728x90

이제 fuction에 대해서 다시 배워보자.

function 예문

빨간색 동그라미 친 부분을 function으로 바꾸면 예시가 나온다.


Comment 기능

1번 줄 짝대기 두 개 '//' 이건 코멘트라는 건데 프로그래밍할 때 컴파일러가 이 부분은 무시하고 프로그램으로 만들어준다.

부가설명을 하기위해 사용한다고 보면 된다. //이건 한 줄만 적용이 되지만

/**/를 활용한 코멘트 사용 예시

이렇게 /*이 사이에 할말을 적자*/ 를 이용하면 여러 줄을 코멘트로 바꿔 버린다.


함수 뜯어보기

함수 선언하기

int timesTwo()라고 함수를 선언했다. 이 함수는 실행하고 나서 결괏값을 int(이거 뭔지 헷갈리면 이전 포스팅 참고)로 리턴한다는 말이다.

timesTwo(int x) 여기서의 int는 함수안에 x라는 값을 받아서 넣을 건데 이 값이 int의 형태로 들어갈 것이라는 말이다.

return x * 2 는 '결괏값을 리턴한다'라는 말인데 아까 int x라는 값을 받아서 거기에 곱하기 2 하여 리턴할 것이라는 뜻이다.

그리하여 x에 3을 넣으면 3*2=6을, 5를 넣으면 5*2=10을 리턴한다는 의미다. 

여러분 이해했나요? 이게 금방 이해되는 분들은 정말 부럽다.... 나는 몇번을 공부해서 겨우 이해했다. ㅠㅠ


Arrow syntax 이건 뭐지...?

Arrow syntax 예시

 

부등호인가? 라고 생각했지만 역시나 아니었다. (쉽게 넘어가지 않는 코딩의 세계)

Dart에서는 함수바디가 1줄 짜리면 저렇게 부등호를 써서 간단하게도 표현이 가능하다.

 

이것이

이거랑 같은 의미인 것이다.

막간 퀴즈! 아래 이미지와 같은 의미의 함수를 만들어보자. 꼭 해보자.

정답은 아래 더보기

더보기

 

막퀴(막간퀴즈) 정답

 

timesFour는 무엇인가

그럼 위 예시로 돌아와서 timesFour라는 건 무엇인가 보면 timesTwo값을 리턴하는 함수라고 알 수 있다.

그런데 timesTwo(timesTwo(x))라고 되어 있으니 x값에 3을 넣으면 timesTwo함수는 2를 곱하여 6으로 리턴을 해주는데 그 값이 다시 timesTwo로 들어가서 6*2를 하여 12를 리턴해준다는 의미다.

아니 이 간단한 계산을 왜 이렇게 어렵게 표현하나라고 생각할 수 있지만 개발자 형님들이 최대한 코딩 라인을 줄이려는

노력으로 그러시는 게 아닌가 하는 생각이 든다. 그래야 프로그램이 가벼워지려나?

 


Functions are objects

아 이건 또 무엇인가

두번 돌리는 함수

runTwice라는 함수인데 리턴 값은 int인가 보군? 여기까지는 내 수준에서는 이해했다. (어렵게)

그리고 그다음 부분이 문제인데

runTwice안에 두 개가 들어가는데 int 형태인 x가 들어가고 리턴 값이 int인 Fuction이라는 놈은 (int) 형태의 입력값을 받는데 그 이름을 f라고 한다. 결국 여기서 말하는 f라는 놈은 timesTwo()인 것이다.

for문은 아직 안하고 싶어서 코멘트 처리했다^^

자 여기서 나를 비롯한 많은 입문자들이 헷갈릴 거라 생각되는 부분이 나온다.

내가 배운 수학에서는 x는 같은 값으로 쓰였었는데 코딩의 세계에서는 아니다.

첫 번째 줄 오른쪽 f(x)에 들어간 숫자 x는 함수를 거쳐 새로운 값인 부등호 왼쪽의 x가 된다.

두 번째 줄 오른쪽f(x)에 들어간 숫자 x는 첫번째 줄에서 계산을 통해 나온 x 이고 이놈은 또 f(x)함수를 통해 새로운 값의 부등호 왼쪽의 x가 된다.

그리고 함수는 최종적으로 두번째줄 왼쪽의 x를 리턴하는 것.


자 이제 메인 함수를 통해 결과를 뜯어보자

뜯어보려고 했으나 새로운 난관 '$'를 만났다.

print 함수는 string을 화면에 출력해주는 놈이었는데 '이 안에 빨간 글씨들'을 출력해준다. 출력해주는 글씨들과 변수들을 같이 출력해주고 싶을 때는 $를 쓰면 된다. ${timesTwo(4)}라고 썼으니 timesTwo함수에 4를 넣은 값 8이 출력이 될 것이다.

main함수에 각 3개의 print함수는 오른쪽과 같은 계산 결과를 나타내는 것이다.

유투브 더코딩파파의 'Dart언어 한시간만에 건너뛰기'를 보고 공부중입니다.
728x90