본문 바로가기
패스트캠퍼스 30일챌린지

[안드로이드] 패스트캠퍼스 챌린지 03일차!!

by 욧닭 2021. 9. 8.
반응형

들어가며

어제까지는 정말 Java 뿐만 아니라 지금 현존하는 코드에서는 무조건 사용되는 것들을 배웠습니다! 이번 강의에서는 Kotlin 과 Java를 전격 비교 하며 코드를 짤 예정이라고 합니다!!

쭉 공부하다 보니 Kotlin 이 정말 잘 만든 코드라고 느껴지는 부분들이 많았는데요! 왜 구글이 안드로이드 정식 언어로 채택했는지도 알 것 같습니다!

공부노트 같이 볼까요? ㅎㅎ

범위 함수

JAVA 코드 와는 다르게 kotlin 에서는 범위함수란 것이 있어요! 총 5가지의 종류가 있습니다

let, run, with, also, apply 로 구성이 되어 있으며 기능은 각기 다릅니다!

먼저 apply 부터 살펴 보도록 하죠!!

apply

Kotlin

val Person = Person().apply{
        name = "철수"
        age = 30
}

Function literals with Receiver 형태로 {} 사이의 값을 this를 통해서 객체 타입에 맞게 반환을 해줍니다!

원래 this.namethis.age 로 객체의 필드 변수에 접근이 가능하며 여기서 this라 함은 생략이 가능하기 때문에 다음과 같이 사용할 수 있습니다!

주로 객체를 초기화 할 때 많이 사용하게 됩니다!!

Java

 

Person person = new Person();
person.name = "철수"
person.age = 30

위 코드는 주로 자바로 개발을 할 때 setter 또는 getter 아니면 필드 변수에 직접 초기화를 할 수 있다는 것을 보여 줍니다!

같은 코드 즉 person 변수를 여러번 사용하여 초기화 하다보니 코드가 간결 해지지 못하고 조금 지저분해 집니다!

이를 보안한게 apply 즉 초기화 할 때 주로 사용되는 함수 입니다!

also

Kotlin

Random.nextInt(100).also{ // it ->
    print("랜덤 값은!! $it 입니다")
}

run 함수와 다른 점을 찾으셨나요?! 바로바로 return 값을 파라미터 를 넘긴다는 것입니다!

해당 코드를 해석해본다면 also 이후 중괄호 안에서는 nextInt(100) 으로 부터 받은 값을 it 로 던져주고 그 값을 중괄호 안에서 사용할 수 있는 것을 의미 합니다

it 로 던져준다는 말은 람다식으로 함수를 작성한다면 인자로 값을 넘겨준다라는 뜻과 같습니다. it 는 그 인자명을 선언하지 않으면 자동으로 생기는 변수 명입니다

인자명을 선언해 준다면 다음과 같은 코드가 나올 수 있습니다

Random.nextInt(100).also{ value ->
    print("랜덤 값은!! $value 입니다")
}

java

int value = Random.nextInt(100)
System.out.println("랜덤 값은 !!" + value + " 입니다")

자바로 표현한다면 이렇게 nextInt(100) 값을 변수에다가 초기화 시키고 그 변수를 다시 print 하는 작업을 해줘야 합니다!

뭔가 코틀린은 한번에 끝내는 느낌인데 자바는 두번에 나눠서 코드를 작성해야 하니 코드가 길어질 것 같아요!!

let

Kotlin

val number: Int?

val sumNumberStr = number?.let{
    "${sum(10, it)}"
}

null이 아닌 객체 에서 함수를 수행하는 역할을 합니다!

지금까지의 함수 apply, also 는 객체 자체에서 역할을 수행했습니다 예를들면 객체에서 값이 나온다면 그 값을 한정적으로 중괄호 안에서만 사용할 수 있다던가 아님 객체 자신을 return 받아 사용하는 그런 역할들을 했습니다!

그러나 let 은 자기 자신 또는 중괄호 안에서만 값을 사용할 수 있는 것이 아닌 변수에 초기화를 할 수 있는 그런 함수입니다!

느낌이 약간 다른 것들과는 다르게 조금 광활하다는 느낌?! 을 받습니다!

아 그리고 위코드를 해석하자면 numbernull이면 sumNumberStr 에도 null 이 담기는데 null 이 아닌 빈값을 초기화 시키고 싶을때가 있을 것 같습니다 그럴 땐!

val number: Int?

val sumNumberStr = number?.let{
    "${sum(10, it)}"
}.orEmpty()

다음과 같이 orEmpty를 사용하게 된다면 sumNumberStr 에는 null 이 아닌 "" (빈값) 으로 초기화 되게 됩니다!

Java

Integer number = null
String sumNumberStr = null

if(number != null){
    sumNumberStr = Sum(10, number)
}else{
    sumNumberStr = ""
}

딱 보니 자바는 좀 옛날 느낌이 나죠?! ㅋㅋㅋ

ifelse 를 사용해서 null을 처리하는 코드입니다. 확실히 코틀인이 null sefe 언어라서 그런가요 null 에 대해서는 코드가 많이 간결해지고 가독성도 좋아지는 모습이 있습니다!!

 

 

내일은 나머지 함수들을 다뤄 볼꺼고 그 다음날은 대망의 안드로이드를 설치합니다!!

 

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발#패스트캠퍼스후기#30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본문 하단 챌린지 참여 게시글을 나타내는 문구 기재: 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
반응형

댓글