안녕하세요 공공돌🧸 입니다 !!
오늘은 코틀린 코드 컨벤션에서 서식 지정(Formatting)에 람다, 후행 쉼표에 대해 알아보겠습니다.
다른 서식 지정에 관한 글은 맨 아래 링크에 정리가 되어 있으니 들어가서 한 번씩 봐주세요 😳😳
자세한 코틀린 코드 컨벤션은 아래 링크에서 보실 수 있습니다.
Coding conventions | Kotlin
kotlinlang.org
서식 지정(Formatting)
람다( Lambdas )
람다 식에서는 중괄호 주위와 매개변수를 본문에서 구분하는 화살표 주위에 공백을 사용해야 합니다.
호출이 단일 람다를 사용하는 경우 가능할 때마다 괄호 바깥으로 전달하세요.
list.filter { it > 10 }
람다에 대한 레이블을 할당하는 경우 레이블과 여는 중괄호 사이에 공백을 넣지 마십시오.
fun foo() {
ints.forEach lit@{
// ...
}
}
여러 줄의 람다에서 매개변수 이름을 선언할 때 첫 번째 줄에 이름을 입력하고 그 뒤에 화살표와 줄 바꿈을 입력합니다.
appendCommaSeparated(properties) { prop ->
val propertyValue = prop.get(obj) // ...
}
매개변수 목록이 너무 길어서 한 줄에 다 들어갈 수 없다면 화살표를 별도의 줄에 넣으세요.
foo {
context: Context,
environment: Env
->
context.configureEnv(environment)
}
추가 설명
코틀린에서 람다(lambda)는 다음과 같이 익명 함수로 사용되는 코드 블록을 나타냅니다
{ 파라미터 -> 본문 }
- { 와 }는 람다 식을 감싸는 중괄호입니다.
- 파라미터는 람다 함수의 매개변수 목록을 나타내며, 필요한 경우 생략할 수 있습니다.
- ->는 파라미터와 람다 함수의 본문을 구분하는 화살표입니다.
- 본문은 람다 함수의 실행 코드 블록으로, 파라미터와 함께 작동합니다.
람다 함수는 함수처럼 호출되며, 다른 함수의 인수로 전달할 수 있습니다.
람다 함수는 간결하고 가독성이 좋은 코드를 작성하는 데 매우 유용합니다.
// 예시
// 람다를 변수에 할당
val square: (Int) -> Int = { x -> x * x }
// 람다를 함수에 전달
fun applyOperation(number: Int, operation: (Int) -> Int): Int {
return operation(number)
}
val result = applyOperation(5) { x -> x * 2 } // 5를 2배로 곱하는 람다 전달
람다는 주로 고차 함수(higher-order function)의 인수로 사용되며, 컬렉션 처리, 스레딩, 이벤트 처리 및 함수형 프로그래밍 등 다양한 상황에서 활용됩니다.
후행 쉼표( Trailing commas )
후행 쉼표는 일련의 요소 중 마지막 항목 뒤의 쉼표 기호입니다.
class Person(
val firstName: String,
val lastName: String,
val age: Int, // trailing comma
)
후행 쉼표를 사용하면 여러 가지 이점이 있습니다.
- 모든 초점이 변경된 값에 맞춰지므로 버전 제어 차이점이 더욱 깔끔해집니다.
- 요소를 쉽게 추가하고 재정렬할 수 있습니다. 요소를 조작하는 경우 쉼표를 추가하거나 삭제할 필요가 없습니다.
- 예를 들어 개체 이니셜라이저의 코드 생성을 단순화합니다. 마지막 요소에는 쉼표가 있을 수도 있습니다.
후행 쉼표는 전적으로 선택 사항입니다.
코드는 쉼표 없이도 계속 작동합니다.
Kotlin 스타일 가이드는 선언 사이트에서 후행 쉼표 사용을 권장하고 호출 사이트에서는 이를 사용자 재량에 맡깁니다.
열거
enum class Direction {
NORTH,
SOUTH,
WEST,
EAST, // trailing comma
}
값 인수
fun shift(x: Int, y: Int) { /*...*/ }
shift(
25,
20, // trailing comma
)
val colors = listOf(
"red",
"green",
"blue", // trailing comma
)
클래스 속성 및 매개변수
class Customer(
val name: String,
val lastName: String, // trailing comma
)
class Customer(
val name: String,
lastName: String, // trailing comma
)
함수 값 매개변수
fun powerOf(
number: Int,
exponent: Int, // trailing comma
) { /*...*/ }
constructor(
x: Comparable<Number>,
y: Iterable<Number>, // trailing comma
) {}
fun print(
vararg quantity: Int,
description: String, // trailing comma
) {}
선택적 유형이 있는 매개변수(setter 포함)
val sum: (Int, Int, Int) -> Int = fun(
x,
y,
z, // trailing comma
): Int {
return x + y + x
}
println(sum(8, 8, 8))
색인 접미사
class Surface {
operator fun get(x: Int, y: Int) = 2 * x + 4 * y - 10
}
fun getZValue(mySurface: Surface, xValue: Int, yValue: Int) =
mySurface[
xValue,
yValue, // trailing comma
]
람다의 매개변수
fun main() {
val x = {
x: Comparable<Number>,
y: Iterable<Number>, // trailing comma
->
println("1")
}
println(x)
}
입장할 때
fun isReferenceApplicable(myReference: KClass<*>) = when (myReference) {
Comparable::class,
Iterable::class,
String::class, // trailing comma
-> true
else -> false
}
컬렉션 리터럴(주석)
annotation class ApplicableFor(val services: Array<String>)
@ApplicableFor([
"serializer",
"balancer",
"database",
"inMemoryCache", // trailing comma
])
fun run() {}
인수 입력
fun <T1, T2> foo() {}
fun main() {
foo<
Comparable<Number>,
Iterable<Number>, // trailing comma
>()
}
유형 매개변수
class MyMap<
MyKey,
MyValue, // trailing comma
> {}
구조파괴 선언
data class Car(val manufacturer: String, val model: String, val year: Int)
val myCar = Car("Tesla", "Y", 2019)
val (
manufacturer,
model,
year, // trailing comma
) = myCar
val cars = listOf<Car>()
fun printMeanValue() {
var meanValue: Int = 0
for ((
_,
_,
year, // trailing comma
) in cars) {
meanValue += year
}
println(meanValue/cars.size)
}
printMeanValue()
1. 들여 쓰기, 가로 공백, 콜론
[ Kotiln Code conventions ] 서식 지정(Formatting) 1
안녕하세요 공공돌🧸 입니다 !! 오늘은 코틀린 코드 컨벤션에서 서식 지정(Formatting)에 대해 설명해보려고 합니다. 서식 지정의 경우 들여 쓰기, 가로 공백, 콜론, 클래스 헤더, 수정자 순서, 등 15
sheep1sik.tistory.com
2. 클래스 헤더, 수정자 순서, 주석, 파일 주석
[ Kotiln Code conventions ] 서식 지정(Formatting) 2
안녕하세요 공공돌🧸 입니다 !! 아래 글에 이어 코틀린 코드 컨벤션에서 서식 지정(Formatting)에 클래스 헤더, 수정자 순서, 주석, 파일 주석에 대해 설명해보려고 합니다. 다른 서식 지정에 관한
sheep1sik.tistory.com
3. 기능, 표현식 본문, 속성, 제어 흐름문, 메소드 호출, 체인된 호출
[ Kotiln Code conventions ] 서식 지정(Formatting) 3
안녕하세요 공공돌🧸 입니다 !! 오늘은 코틀린 코드 컨벤션에서 서식 지정(Formatting)에 기능, 표현식 본문, 속성, 제어 흐름문, 메소드 호출, 체인된 호출에 대해 설명해보려고 합니다. 다른 서식
sheep1sik.tistory.com
공부하는 공돌이, 공공돌입니다🐻
@sheep1sik
'Android' 카테고리의 다른 글
[ Kotiln Code conventions ] 서식 지정(Formatting) 3 (2) | 2023.11.02 |
---|---|
[ Kotiln Code conventions ] 서식 지정(Formatting) 2 (2) | 2023.10.30 |
[ Kotiln Code conventions ] 서식 지정(Formatting) 1 (2) | 2023.10.30 |
[ Kotlin Code conventions ] 명명규칙(Naming rules) (2) | 2023.10.29 |
[ Kotlin Code conventions ] 소스코드 구성(Source code organization) (1) | 2023.10.22 |