Hello, Android!

import와 확장함수 본문

Kotlin

import와 확장함수

lwndnjs93 2018. 11. 26. 14:26

확장함수란?

어떤 클래스의 멤버 메소드인 것처럼 호출할 수 있지만 그 클래스 밖에서 선언된 함수이다.

A라는 클래스가 존재하는데 a메소드는 A클래스 내에 존재하는것이 아닌

다른 클래스에서 a메소드를 A클래스에 추가한 것이다

fun main(args: Array<String>){
println("Hello, kotlin".lastChar())

val list = listOf(1,2,3)

println(joinToString(list))

}

fun String.lastChar(): Char = this.get(length -1)

기본적으로 존재하는 String클래스에 lastChar메소드를 확장함수로 추가한 것이다


package strings

fun main(args: Array<String>){
println("Hello, kotlin".lastChar())

val list = listOf(1,2,3)

println(joinToString(list))

}

fun String.lastChar(): Char = this.get(length -1)

fun <T> joinToString(
collection: Collection<T>,
separator: String = ",",
prefix: String = "",
postfix: String = ""
) : String{
val result = StringBuilder(prefix)
for ((index, element) in collection.withIndex()){
if (index > 0) result.append(separator)
result.append(element)
}
result.append(postfix)
return result.toString()
}

우선 strings패키지 내의 코틀린 파일에 String클래스에 lastChar()메소드를 확장하고 joinToString()메소드가 존재한다


import java.util.ArrayList;
import static strings.TestKt.*;

public class Test_java02 {

public static void main(String args[]){
System.out.println("Hello, java");

ArrayList arr = new ArrayList();
arr.add(1);
arr.add(2);
arr.add(3);

String result = joinToString(arr, "," ,"","");
System.out.println(result);
}
}

자바 코드 내에서 코틀린에 있는joinToString메소드를 호출하였다


import strings.lastChar as lass
import strings.lastChar
import strings.joinToString

fun main(args: Array<String>){
println("Hello, kotlin".lastChar())

val list = listOf(1,2,3)

println("패키지 바깥"+joinToString(list))
println("패키지 바깥"+"Hello, Word".lass())
}

다른 코틀린 파일에서 joinToString메소드와 확장함수인 lastChar을 호출한 모습이다

첫번째 줄에 as를 사용하여 lastChar을 lass라고 부르겠다고 하여서

가장 마지막의 println에서는 lass를 통하여 lastChar을 호출하였다

'Kotlin' 카테고리의 다른 글

스마트 캐스트, 자료형 검사  (0) 2020.02.22
코틀린의null  (0) 2020.02.19
문자열 String  (0) 2020.02.18
조건분기 when if  (0) 2018.11.22
코틀린 함수와 변수  (0) 2018.11.22