Fungsi di Kotlin berbeda dari yang ada di Java dengan cara berikut:
Dalam fungsi Kotlin tidak perlu menjadi bagian dari kelas, seperti di Java jika kita ingin mendefinisikan fungsi kita harus memiliki kelas yang didefinisikan dalam file .java. Tetapi di Kotlin kita dapat mendefinisikan fungsi seperti ini:
Dalam fungsi Kotlin dapat memiliki parameter default seperti ini:
Output: pengujian2
Dalam snapshot di atas, fungsi log memiliki parameter "nilai" default yang ditetapkan dengan nilai sama dengan "2". Jadi, jika kita memanggilnya dari main, kita tidak perlu meneruskan "parameter" nilai ke fungsi log.
Tetapi jika kita tidak menetapkan "nilai" nilai parameter sama dengan "2", kita akan mendapatkan kesalahan waktu kompilasi di utama.
Jadi, manfaat memiliki parameter default adalah bahwa kita tidak perlu meneruskan nilai ke fungsi panggilan dan itu tidak memerlukan perubahan dalam kode di mana-mana jika kita ingin mengubah nilai hanya melakukan perubahan pada single tempat.
Dalam fungsi Kotlin dapat memiliki parameter bernama seperti ini:
fun main(args: Array<String>){ named(count=1,str="Sachin") named(str="Kumar",count=2)
} fun named(str: String,count: Int) { println(str+count)
}
Jadi, kita dapat dengan mudah memahami manfaat menggunakan parameter bernama saat memanggil fungsi bernama, kita dapat memanggilnya dengan mengirimkan parameter dalam urutan apa pun yang kita inginkan.
Kotlin dapat memiliki fungsi Ekstensi seperti ini:
fun main(args: Array<String>){ println("Sachin Kumar".removeSpace()) var returnedVal = -23.absoluteValue() println("returned Int val: $returnedVal")
} // extension function. fun String.removeSpace() : String{ return this.replace(" ","") } // extension function. fun Int.absoluteValue(): Int{ return -this }
Dalam cuplikan kode di atas, "ini" adalah penerima yang merupakan nilai string yang kami lewati sebagai utilitas. Jadi, tidak perlu membuat kelas terpisah untuk manipulasi string dan integer di atas.
Karenanya, manfaat menggunakan fungsi ekstensi adalah mengurangi penggunaan kelas utilitas seperti di Jawa dan membuat kode kita lebih mudah dibaca.
Kotlin dapat memiliki fungsi infiks seperti ini:
Output:
SachinKumar returned Int val: 23
Jadi, dengan infix, kita dapat melakukan overloading operator di Kotlin dan pada saat yang sama, kita dapat memanggil fungsi secara langsung melalui nama fungsi tanpa perlu operator titik.
Kotlin juga mendukung fungsi rekursif ekor jika kita menggunakan panggilan rekursif mendalam seperti ini:
fun main(args: Array<String>) { var h1 = Header("H1") var h2 = Header("H2")
// with inflix keyword can use simply fun name. var h3 = h1 plus h2 println(h3.name)
/* operator overloading, have to use operator keyword with infix function. */ var h31 = h1 + h2 println(h31.name) } class Header(var name:String){ } //infix function. infix operator fun Header.plus(other: Header) : Header { return Header(this.name+other.name) }
Kode di atas akan mengarah ke pengecualian Stackoverflow. Jadi, kita akan menggunakan kata kunci "tailrec" dengan fungsi fibonacci:
import java.math.BigInteger fun main(args: Array<String>) { println(fibonacci(100000, BigInteger("1"),BigInteger("12")))
} fun fibonacci(length:Int, a: BigInteger, b: BigInteger): BigInteger { return if (length==0) b else fibonacci(length-1,a+b,a) }
Ini adalah beberapa dasar penting dari fungsi di Kotlin yang harus disadari ketika melakukan pengkodean di Kotlin. Ini memiliki manfaat besar dibandingkan dengan kode di Jawa, hal utama adalah ini sangat mudah digunakan.
Saya harap Anda telah menemukan itu berguna, silakan suka artikel ini dan berbagi dengan sesama coders Anda :).