컴퓨터 언어/코틀린

[Kotiln] 코틀린 함수의 활용 Vararg

훈츠 2020. 2. 19. 17:10
반응형

안녕하세요. 훈츠 입니다. 금일은 함수에 대해 알아보겠습니다. 코틀린에서 함수를 사용할때 유용한 사항에 대해 정리 해보겠습니다. 

함수 오버로딩 (Overloading)

함수의 이름이 같더라도, 속성값의 자료형이 다르거나 속성값의 갯수가 다르다면 오버로딩이 가능합니다.

fun main(){
    userPrint("testString")
    userPrint(100)
}

fun userPrint(data:String) {
    println("userPrint String : ${data}")
}

fun userPrint(data:Int) {
    println("userPrint Value : ${data}")
}
//출력화면
userPrint String : testString   //오버로딩 확인 
userPrint Value : 100 //오버로딩 확인 

네임드 아규먼츠 (Named Arguments)

패러미터의 순서와 상관없이 패러미터를 할당 하는 방법 입니다. 

  • 속성 = 값 : 이렇게 지정하면 순서대로 넣지 않아도 값을 속성값에 순서에 상관없이 할당 할수 있습니다. 
fun main(){
    deliveryItem("족발")
    deliveryItem("족발", destination = "학원")
}

fun deliveryItem(name: String, count: Int = 1, destination: String = "집" ){
    println("${name}, ${count}개를 ${destination}에 배달하였습니다.")
}
//출력화면
족발, 1개를 집에 배달하였습니다.
족발, 1개를 학원에 배달하였습니다.

버라그 (verarg) : variable number of arguments

패러미터를 정해진 갯수 없이 할당 받는 방법 입니다. 

  • 다른 패러미터와 같이 사용시에는 반드시 '맨 뒤' 에 사용 해야 합니다. 
fun main() {
    sum(1,2,3,4)
    stringsum("사람이","사람을","사랑하는것")
}

fun sum(vararg number: Int){
    var sum = 0
    for(n in number){
        sum += n
    }
    println(sum)
}

fun stringsum(vararg str:String){
    var sum = ""
    for (n in str){
        sum += n +","
    }
    println(sum)
}
//출력화면
10
사람이,사람을,사랑하는것,

인픽스 함수 (infix)

Infix 함수는 두개의 변수 가운데 오는 함수를 말합니다. 인픽스 함수는 코드의 양을 적고, 간결하게 만들수 있습니다. map함수에서 이미 정의 되어있는것은 to 가 있습니다. mapOf("key" to "value) 

정의 법

  • infix fun dispatcher.함수이름(receiver) : 리턴타입{ 구현부 }
  • dispatcher는 infix 함수 전에 오는 객체를 말하며, receiver는 infix 함수 뒤에오는객체입니다. 
fun main() {
    var str = "infix data ".filesum("test")//. 연산자 사용 가능
    var str2 = "infix data" filesum("test")//띄어 쓰기도 사용 가능
    println(str)
    println(str2)
}

infix fun String.filesum(str:String) :String{
    return this + str
}

//출력화면
infix data test
infix datatest

 클래스에 infix 함수 적용

fun main() {
    val myString = MyString()
    myString add "Hello"
    myString add "World"
    myString add "Kotlin"
    System.out.println(myString.string)
}

class MyString {
    var string = ""
    infix fun add(other: String) {
        this.string = this.string + other
    }
}
//출력 화면
HelloWorldKotlin

 적절한 infix 함수의 사용은 코드를 간결하게 하고, 가독성을 높여준다는 장점이 있습니다. 

반응형