728x90
02일차
생성일: 2022년 1월 25일 오후 10:03
30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online
강의 목표
- 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
- 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
- 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
- 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.
Ch01. Kotlin 목차
Kotlin에 대해 알아보자Kotlin 문법 훑어보기- Kotlin으로 개발하기 vs Java로 개발하기
Kotlin으로 개발하기 vs Java로 개발하기
코틀린은 Null safe 하다
// JAVA
Interger a = 100
// null safe 하지 않음
a = null
a.sum()
- 자바의 경우 try-catch 또는 예외처리로 null check가 필요하다. 그렇지 않으면 NullPoint Exception 이 날 수도 있음
// KOTLIN
val b: Int? = 100
val c: Int = 100
// null을 의미에 둔다
b?.sum() // null 일 경우 실행하지 않음
c.sum() // 애초에 null safe한 자료형
- 코틀린의 경우 null 의 가능성을 자료형 선언 단계에서 null check 가능하다
?
와일드 카드로 null이 아닐때에면 실행하는 방법도 있다
범위 함수 Scope Funtion (apply, with, let, also, run)
- 코틀린에서 기본제공되는 함수
- 람다식으로 호출할때 범위 안에서 수신객체 등이 자유롭게 접근 할 수 있도록 해줌
- 각각 비슷하지만 다른 특징을 가짐 (용도가 다름)
- 코드를 좀 더 읽기 쉽게 해줌
Apply 함수
// JAVA
Person person = new Person();
person.firstName = "Fast"
person.lastName = "Campus"
// KOTLIN
val person = Person().apply {
firstName = "Fast"
lastName = "Campus"
}
- 내부에서
this
를 통해 접근 (생략) - 객체의 맴버에 접근
- 객체를 반환
- 주로 객체를 초기화 할 때 사용
Also 함수
// JAVA
int value = Random().nextInt(100);
System.out.print(value);
// KOTLIN
Random.nextInt(100).also { value ->
print("getRandomInt() generated value $value")
} // 객체가 입력값으로 전달됨
Random.nextInt(100).also {
print("getRandomInt() generated value $it")
} // 매개변수는 생략하고 it으로 접근가능
- 객체가 람다 매개변수로 전달
it
으로 입력값에 접근 가능- 객체를 반환
- 객체의 유효성을 확인하거나 print하여 디버깅 할 때 사용
LET 함수
// JAVA
Interger number = null;
String sumNumberStr = null;
if(number != null) {
sumNumberStr = "" + sum(10, number);
}
// KOTLIN
val number: Int?
val sumNumberStr = number?.let {
"${sum(10, it)}"
}
val sumNumberStr = number?.let {"${sum(10, it)}"}.orEmpty()
// number가 null 일 때 it에 빈값이 들어간다.
- 주로 null 이 아닌 객체에서 람다를 실행할 때 사용
- 식 안에서 실행한 결과 값이 반환된다
- null 이 아닐때에만 실행된다
With 함수
Person person = new Person();
person.work();
person.sleep();
System.out.println(person.age);
Person person = new Person();
with(person) {
work()
sleep()
println(age)
}
- 객체로 이러한 함수나 변수들로 할 수 있는 명령
this
로 접근
Run 함수
service.port = 8080
Result result = service.query()
val result = service.run {
port = 8080
query()
}
- 어떤 값을 계산할 필요하거나 객체 구성값이 한번에 있을 때 유용
- with 함수와 비슷하다
Data Class 데이터 클래스
data class JavaObject(val s: String)
- 데이터를 저장하는 목적으로 만든 클래스
copy
,toString
,hashcode
,getter
,setter
등이 자동으로 생성되어 편리하다var
로 선언 시 getter setter 이용가능
Lamda Expression 람다식
button.setOnClickListener { v ->
...
}
button.setOnClickListener {
... $it ...
}
- 코틀린이 함수형 언어에 가까워서 있는 특징
- 함수에 함수를 전달하고 전달된 함수에서 실행
Lazy init (lateinit) 게으른 초기화
var nullableNumber: Int? = null
lateinit var lateinitNumber: Int
lateinitNumber = 10 // 추후 초기화
nullableNumber?.add() // 매번 nullcheck가 필요
lateinitNumber.add() // 편하다
val lazyNumber :Int by lazy { 100 }
// 사용하기 전까지는 lazyNumber 라는 변수에 100이 할당되지 않는다
lazyNumber.add() // 사용할 때 100이 할당
- 코틀린에서는 변수를 생성할 때 null safe한 타입으로 선언한 경우 초기화가 필수
val
로 선언했을 때 초기값이 없으면 초기화 불가- 그래서
lateinit
을 사용 - 굳이 lazy 한 동작이 필요하지 않다면 초기화 먼저하자
---
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
수강 인증샷
링크
728x90
'Android > Challenge' 카테고리의 다른 글
패스트캠퍼스 챌린지 06일차 (0) | 2022.01.29 |
---|---|
패스트캠퍼스 챌린지 05일차 (0) | 2022.01.28 |
패스트캠퍼스 챌린지 04일차 (0) | 2022.01.27 |
패스트캠퍼스 챌린지 03일차 (0) | 2022.01.26 |
패스트캠퍼스 챌린지 01일차 (0) | 2022.01.24 |