Notice
Recent Posts
Recent Comments
Link
Hello, Android!
import와 확장함수 본문
확장함수란?
어떤 클래스의 멤버 메소드인 것처럼 호출할 수 있지만 그 클래스 밖에서 선언된 함수이다.
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 |