들어가며
어제까지는 정말 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.name
과 this.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
은 자기 자신 또는 중괄호 안에서만 값을 사용할 수 있는 것이 아닌 변수에 초기화를 할 수 있는 그런 함수입니다!
느낌이 약간 다른 것들과는 다르게 조금 광활하다는 느낌?! 을 받습니다!
아 그리고 위코드를 해석하자면 number
가 null
이면 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 = ""
}
딱 보니 자바는 좀 옛날 느낌이 나죠?! ㅋㅋㅋ
if
와 else
를 사용해서 null을 처리하는 코드입니다. 확실히 코틀인이 null sefe
언어라서 그런가요 null
에 대해서는 코드가 많이 간결해지고 가독성도 좋아지는 모습이 있습니다!!
내일은 나머지 함수들을 다뤄 볼꺼고 그 다음날은 대망의 안드로이드를 설치합니다!!
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발#패스트캠퍼스후기#30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본문 하단 챌린지 참여 게시글을 나타내는 문구 기재: 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. |
'패스트캠퍼스 30일챌린지' 카테고리의 다른 글
[안드로이드] 패스트캠퍼스 챌린지 06일차!! (0) | 2021.09.11 |
---|---|
[안드로이드] 패스트캠퍼스 챌린지 05일차!! (0) | 2021.09.10 |
[안드로이드] 패스트캠퍼스 챌린지 04일차!! (0) | 2021.09.09 |
[안드로이드] 패스트캠퍼스 챌린지 02일차!! (0) | 2021.09.07 |
[안드로이드] 패스트캠퍼스 챌린지 01일차!! (0) | 2021.09.06 |
댓글