728x90
3.4.2 가변 인자 함수
1. 인자의 개수가 정해지지 않은 인자(vararg)로 메서드 호출 시 원하는 개수만큼 값을 인자로 넘겨 사용 가능
fun main(args: Array<String>) {
val ls = arrayOf(1,2,3)
val ls2 = arrayOf(*ls,4,5,6)
printNumbers(*ls2.toIntArray())
}
fun printNumbers(vararg numbers: Int) {
for (n in numbers) {
println(n)
}
}
2. 스프레드 연산자(*)를 통해 배열을 풀어 각 원소가 인자로 전달되도록 함
fun main(args: Array<String>) {
val ls = intArrayOf(1,2,3)
printNumbers(*ls)
}
fun printNumbers(vararg numbers: Int) {
for (n in numbers) {
println(n)
}
}
3.5.3 여러 줄 3중 따옴표 문자열
1. 3중 따옴표를 사용하면 줄 바꿈이 있는 텍스트를 쉽게 문자열로 생성 가능
fun main(args: Array<String>) {
val logo = """| //
.| //
.| / \
"""
print(logo)
}
2. 문자열을 알아보기 쉽게 작성하기 위해 특별한 문자열로 표시,
trimMargin 메서드를 이용해 구분 문자열의 직전 공백을 제거 가능
fun main(args: Array<String>) {
val logo = """| //
.| //
.| / \
""".trimMargin(".") // 마침표 직전까지의 공백을 제거
print(logo)
}
3. 3중 따옴표 문자열 안에서는 이스케이프 사용이 불가능
- 3중 따옴표 문자열 안에 $를 넣어야 한다면 문자열 템플릿 안에 작성해야 함
fun main(args: Array<String>) {
val price = """${'$'}99.9"""
print(price)
}
3.6 코드 다듬기: 로컬 함수와 확장
- 코드 중복 예제: 필드 검증에 대한 중복
// User.kt
import java.lang.IllegalArgumentException
class User (val id: Int, val name: String, val address: String)
fun saveUser(user: User) {
if (user.name.isEmpty()) {
throw IllegalArgumentException("Can't Save user id: ${user.id}")
}
if (user.address.isEmpty()) {
throw IllegalArgumentException("Can't Save user id: ${user.id}")
}
// user 저장
}
- 로컬 함수를 사용한 중복 제거
// User.kt
import java.lang.IllegalArgumentException
class User (val id: Int, val name: String, val address: String)
fun saveUser(user: User) {
fun validate(value: String, fieldName: String) {
if (value.isEmpty()) {
throw IllegalArgumentException("Can't Save user id: ${user.id}")
}
}
validate(user.name, "Name")
validate(user.address, "Address")
// user 저장
}
// Main.kt
fun main(args: Array<String>) {
saveUser(User(123,"",""))
}
728x90
'Android > Kotlin' 카테고리의 다른 글
[코틀린 인 액션] 5장 정리 (0) | 2022.11.30 |
---|---|
[코틀린 인 액션] 4장 정리 (0) | 2022.11.29 |
[코틀린 인 액션] 2장 정리 (0) | 2022.11.24 |
[Kotlin] enum, sealed class (0) | 2022.09.27 |
[Kotlin] 고차 함수, 람다, Scope functions (0) | 2022.09.18 |