728x90
반응형
인라인(inline) 함수
- Kotlin 코드가 Java 코드로 변경될 때 함수를 호출하는 코드를 함수내에 구현한 코드로 변경하는 함수이다.
- 함수 호출 방식은 전체 코드양이 줄어들어 메모리를 적게 쓴다는 장점이 있지만 호출 시 코드 흐름이 이동하고 다시 돌아와야 하기 때문에 작업량이 늘어난다.
- 인라인 함수는 전체 코드양이 늘어 메모리를 더 많이 사용하지만 코드 흐름의 이동 없이 수행되기 때문에 작업량이 늘어나지 않는다.
fun main() {
testFunc1()
testFunc1()
testFunc2()
testFunc2()
}
fun testFunc1(){
println("------------------------")
println("testFunc1")
println("------------------------")
}
inline fun testFunc2(){
println("------------------------")
println("testFunc2")
println("------------------------")
}
중위(infix) 함수
- 함수를 연산자처럼 사용할 수 있는 함수이다.
fun main() {
val v1 = 100
val r1 = v1.add2(50)
println("r1 : $r1")
val r2 = v1 add2 50
println("r2 : $r2")
val r3 = v1.minus2(50)
println("r3 : $r3")
val r4 = v1 minus2 50
println("r4 : $r4")
}
infix fun Int.add2(a1:Int) : Int{
return this + a1
}
infix fun Int.minus2(a1:Int) : Int{
return this - a1
}
연산자 오버로딩
- Java에서 정수와 정수를 더하면 더하기 연산을 수행하여 결과를 전달한다.
- Kotlin은 모든 값을 객체로 만들어 객체로 관리하기 때문에 코드에 정수를 작성하면 정수로 관리하는 것이 아닌 정수 값을 관리하는 객체를 생성하여 객체로 관리하게 된다.
- 따라서 더하기 연산 자체가 일반적인 연산 방식으로 동작하지 못한다.
- Kotlin에서는 객체와 객체를 연산자를 통해 연산을 하게 되면 연산을 수행하는 것이 아닌 객체 내의 메서드를 호출한다.
- 호출된 메서드의 객체를 반환 받아 이를 연산의 결과로 사용하게 된다.
단항 연산자
Expression | Translated to |
+a | a.unaryPlus() |
-a | a.unaryMinus() |
!a | a.not() |
val num1 = 100
val num2 = 200
val a1 = num1 + num2
println("a1 : $a1") // 300
val a2 = num1.plus(num2)
println("a2 : $a2") // 300
증감 연산자
Expression | Translated to |
a++ | a.inc() |
a-- | a.dec() |
산술 연산자
Expression | Translated to |
a + b | a.plus(b) |
a - b | a.minus(b) |
a * b | a.times(b) |
a / b | a.div(b) |
a % b | a.rem(b)a.mod(b) |
a .. b | a.rangeTo(b) |
대입 연산자
Expression | Translated to |
a += b | a.plusAssign(b) |
a -= b | |
a *= b | |
a /= b | |
a %= b |
비교 연산자
Expression | Translated to |
a == b | a.compareTo(b) == 0 |
a != b | a.compareTo(b) != 0 |
a > b | a.compareTo(b) > 0 |
a < b | a.compareTo(b) < 0 |
a >= b | a.compareTo(b) >= 0 |
a <= b | a.compareTo(b) <= 0 |
728x90
반응형
'Language > Kotlin' 카테고리의 다른 글
Kotlin 표준(Scope)함수: apply, also, with, run, let (0) | 2021.05.13 |
---|---|
Kotlin 배열(Array), 문자열(String) (0) | 2021.04.06 |
[Kotlin 함수형 (1)] 람다식, 익명함수, 고차함수 (0) | 2021.04.06 |
[Kotlin 객체지향 (1)] 클래스, 패키지, 모듈, 접근 제한자, 상속 (0) | 2021.04.06 |
Kotlin 자료형과 흐름제어 (0) | 2021.04.06 |