본문 바로가기
개발

(13) 독학으로 앱 만들어보기 (Kotlin 함수)

by 라이프_디자이너 2022. 11. 17.
반응형

책 100권 읽기 프로젝트에 집중하느라,,, 글 작성을 못했다... 오늘은 Kotlin 함수에 대해 알아본다. 다들 바쁘니까 바로 본론으로 고고.

 

2022.10.05 - [개발] - (12) 독학으로 앱 만들어보기 (Kotlin 변수, 주석)

 

(12) 독학으로 앱 만들어보기 (Kotlin 변수, 주석)

어제에 이어서 오늘은 Kotlin 변수와 주석에 대해 알아본다. 다들 바쁘니까 바로 본론으로 고고. 2022.10.04 - [개발] - (11) 독학으로 앱 만들어보기 (처음부터 다시...) (11) 독학으로 앱 만들어보기 (처

dev-nasus.tistory.com

2022.10.04 - [개발] - (11) 독학으로 앱 만들어보기 (처음부터 다시...)

 

(11) 독학으로 앱 만들어보기 (처음부터 다시...)

독학으로 앱 만들어보겠다고 말한 지... 거의 1년이 다돼가는 시점... 천천히 조금씩 끝까지 하면 된다고 생각했는데... 나의 착각이었다. 지난 포스팅에 이어서 학습하려고 구글 안드로이드 개발

dev-nasus.tistory.com

 

함수? function?

 

프로그램 언어 세계에서는 빠지지 않는 개념이다. 변수. 함수.

 

변수는 지난 글에 풀어서 설명했다. 이번에는 함수다. 왜 함수를 알아야 하나면, 우리가 개발하면 모든 걸 우리 손 끝에서 창조해내는 것이 아니라 다른 사람들이 이미 만들어 놓은 코드를 복사 붙여 넣기를 하고 이해해야 하는데 그때 유용하게 쓰인다. 

 

쉽게 가자.

 

함수는 자주 쓰는 기능이다.

 

쉽게 가자더니, 함수가 웬 자주는 쓰는 기능? 연필로 예를 들어본다. 연필의 기능으로는 쓰는 기능이 있다. 그리고 볼펜도 쓰는 기능이 있고, 보드마카, 네임펜 등등 쓰는 기능들이 있는 것들이 많다. 여기서 쓴다. 이게 함수의 기능이다. 우리가 볼펜이랑 연필로 쓸 때, 각 용품 종류마다 어떻게 쓰는지 방법을 연구해야 한다면 얼마나 머리가 아프겠는가. 

 

우리에게 익숙한 하나의 개념을 모두 기능으로 보고 이것을 함수로 변환해서 생각해보면 된다. 모든 세상을 변수와 함수 개념을 대입해서 생각해보면 미친 사람 같지만, 가끔 엉뚱한 것도 접목되는 게 웃길 수 있다. 현실 세계에서 꾸역꾸역 함수 개념을 대입해 보자면, 잔다. sleep 또한 함수가 될 수 있을 거 같다. 이 개념은 모든 프로그램 언어에 쓰이는 개념으로 확실히 하면 좋다.

 

 

영어에 문법이 있듯, Kotlin에서 문법이 있다.

fun 기능 이름 () { 기능 내용 }

 

함수가 함수라고 알려주는 게 fun이라는 단어다. Kotlin에서는 그렇게 하기로 했다. 그냥 외워야 한다. 그다음에는 기능의 이름이다. 만화나 게임에서 주인공이 어떤 동작을 하는데 이름을 붙이는 거처럼 기술에 이름이 있어야 부를 수 있다. 

 

소괄호 ()

 

fun 기능 이름 다음에 오는 소괄호 안에는 기능이 발동하기 위한 촉매제다. 나는 캠핑을 좋아하니까 캠핑에서 불멍을 예로 들어본다. 

fun 불멍 (장작나무){
	화로대에 장작나무 넣기
	장작나무에 불 붙이기
	장작나무 Fire!!!!!!!!!!!
	눈으로 쳐다보기
}

불멍을 하려면 태울 장작나무가 있어야 된다. 그렇다. 저런 게 소괄호 안에 들어가는 것이다. 보통은 변수가 들어간다. {} 중괄호 안에는 불멍 할 때 하는 행위들을 적어 넣으면 된다.

 

이제 프로그램식 사고로 접근해본다.

 

더하기는 함수야

 

더하기는 함수다. 왜냐? 한번 봐보자. 숫자를 덧셈하기 위해서는 숫자가 2개가 필요하다. 이 숫자들은 위에서 말한 소괄호 안에 재료로 쓰이게 된다. 이걸 위에서 말한 문법으로 표현하자면 이렇다. fun 더하기 (숫자 1, 숫자 2)

 

우리가 하는 덧셈은 무엇인가? 1+2 이런 플러스 기호를 사용한다. 그러면 더하기의 내용은 그대로 채워주면 된다.

fun 더하기 (숫자1, 숫자2)
{
	숫자1+숫자2
}

여기서 이제 추가로 알아야 하는 게 있다.

 

함수는 심부름꾼

 

더하기 이야기로 더 이어가 본다. 1과 2를 더하면 3인데, 함수는 심부름꾼이다. 우리가 심부를 시킬 어떻게 하는가? 돈을 주거나 심부름의 대상을 알려준다. 여기서 돈 또는 심부름의 대상이 소괄호 안에 들어가는 숫자들이다. 

 

근데, 심부름을 잘했는지는 어떻게 알아?

 

이 질문에 대한 답이 우리가 함수에 대해 알아야 하는 개념이다.

 

어떻게 알긴, 뭘 갖고 왔는지 봐야 알지! return

빵 사 오라고 시켰으면 심부름꾼은 빵을 가져와야 한다. 그렇다 아래 코드에서 빵을 사서 나에게 빵을 주는 부분이 빠져있다. 심부름 결과를 돌려주는 행위를 return이라고 약속했다.

fun 심부름 (심부름 내용)
{
	심부름 내용 == 빵 사오기 : return 빵
	심부름 내용 == 물 사오기 : return 물
}

 

 

 

묻고 더블로 가!

 

return에 대한 개념을 알았으면 더블로 알아야 하는 개념이 또 있다. 이것만 하면 함수의 개념은 끝이다. 상황을 가정해보자. 우리에게는 심부름꾼이 여러 명 있고, 각 심부름꾼들은 각자의 역할이 있다. 우리는 너무 못돼서 심부름꾼이 다른 역할을 수행하면 가만두지 않는다.

 

물 심부름꾼, 요리 심부름꾼, 살인 심부름꾼

물 심부름꾼은 물만 사 와야 하고, 요리 심부름꾼은 요리만 해야 한다. 이렇게 하려면 각 심부름꾼에 역할을 붙여줘야 하는데, 그걸 Kotlin에서는 이렇게 표현한다. *살인 심부름꾼은 집중시키기 위한 어그로다.

 

fun 심부름꾼 이름 () : 역할 { return 심부름 내용 } 

 

저렇게 해두면 심부름 내용이 역할과 다른걸 바로 알 수 있게 된다. 왜 역할이 필요한지는 굳이 설명하지 않겠다. 우리가 살면서 역할이 왜 필요한지 느끼는 개념 그대로 적용하면 된다. 함수 개념을 알게 된 기념으로 퇴근 함수를 하나 만들고 자야겠다.

fun 퇴근(출근시간) : 자유
{
	var 퇴근시간 = 출근시간 + 9
	var 현재장소 = "회사"
	if 퇴근시간 == 현재시간:
		현재장소 ="집"
    
	return 씻고 침대에 누운 상태
}
반응형

댓글