CodeKata
Scope funtions 사용하자!!
scope function는 Kotlin에서 객체 지향 프로그래밍을 단순화하고 코드를 더 읽기 쉽게 만드는 데 사용됩니다. 다양한 scope function가 있으며, 각각의 scope function는 객체의 범위(scope) 내에서 코드를 실행하는 방법을 제공합니다.
apply
수신 객체를 변경하지 않고 그대로 반환하며, 주로 객체 초기화 또는 설정할 때 사용됩니다. 블록 내에서 수신 객체의 속성에 접근하여 초기화할 수 있습니다.
data class Person(var name: String, var age: Int)
val person = Person("Alice", 30).apply {
name = "Bob"
age = 25
}
// person.name: "Bob"
// person.age: 25
also
수신 객체를 변경하지 않고 반환하며, 객체의 속성을 변경하는 대신 객체에 대한 작업을 수행하고 그 결과를 반환할 때 사용됩니다.
val person = Person("Alice", 30).also {
println("Creating person: $it")
}
// Output: Creating person: Person(name=Alice, age=30)
let
수신 객체를 변경하지 않고, null이 아닌 경우에만 블록 내에서 수행할 작업을 정의할 때 사용됩니다.
val name: String? = "Alice"
name?.let {
println("Name is $it")
}
// Output: Name is Alice
run
블록 내에서 수행된 결과를 반환하며, 객체의 메서드를 호출하거나 속성에 접근할 때 주로 사용됩니다.
val person = Person("Alice", 30)
val ageDescription = person.run {
"This person is $age years old."
}
// ageDescription: "This person is 30 years old."
with
일반 함수처럼 사용되며, 주로 객체의 속성에 접근할 때 사용됩니다. 단일 객체에 대한 여러 동작을 수행할 때 유용합니다.
val person = Person("Alice", 30)
with(person) {
println("Name: $name, Age: $age")
}
// Output: Name: Alice, Age: 30
Kotlin 문법
스프레드 연산자 (*) ?
스프레드 연산자는 배열이나 컬렉션의 요소를 풀어서 전달하는데 사용되는 연산자입니다. 이를 통해 여러 요소를 동시에 전달하거나 병합할 수 있습니다. 주로 함수 호출 시 인자로 배열이나 컬렉션의 요소를 전달하거나, 배열이나 컬렉션을 병합하는데 사용됩니다.
스프레드 연산자는 Kotlin에서 * 기호로 표현됩니다.
Android
- 과제로 진행한 내용이긴 하지만 Stack과 Fragment 데이터 전달 방식에 대해 공부하였다.
- 작성은 다 했지만 마무리가 안된 것 같아서 올리진 못하지만 새롭게 많이 배웠다.
- 올리게 되면 TIL에 링크로 올릴 예정
- 전에 등록했던 Firebase로 이메일 인증에 대해 다시 만들어 보았다.
- Fragment bottomnavigation 공식문서를 다시 읽었고 똑같이 만들어보았다.
++
Fragment에서 Toast 메세지를 띄우려고 했는데 밑에 사진처럼 나온다.
원인 : Fragment에서는 Activity에서 사용하던 방식(?)으로 사용하면 동작하지 않는다고 한다.
context인자로 this를 주면 오류메시지 발생
해결 : toast는 context인자로 this가 아닌 getActivity()를 넘겨주어야 합니다. 나머지 length나 text사용법은 동일합니다.
'Kotlin > TIL' 카테고리의 다른 글
TIL (04.01) (0) | 2024.04.01 |
---|---|
TIL (03.29) (2) | 2024.03.29 |
TIL (03.27) (1) | 2024.03.27 |
TIL (03.26) (0) | 2024.03.26 |
TIL (03.25) (1) | 2024.03.25 |