KOTLIN: Function

From OnnoWiki
Jump to navigation Jump to search

Sumber: https://www.tutorialspoint.com/kotlin/kotlin_functions.htm

Kotlin is a statically typed language, hence, functions play a great role in it. We are pretty familiar with function, as we are using function throughout our examples in our last chapters. A function is a block of code which is written to perform a particular task. Functions are supported by all the modern programming languages and they are also known as methods or subroutines.

At a broad level, a function takes some input which is called parameters, perform certain actions on these inputs and finally returns a value.

Kotlin adalah bahasa yang diketik secara statis, oleh karena itu, fungsi memainkan peran besar di dalamnya. Kami cukup akrab dengan fungsi, karena kami menggunakan fungsi di seluruh contoh kami di bab terakhir kami. Fungsi adalah blok kode yang ditulis untuk melakukan tugas tertentu. Fungsi didukung oleh semua bahasa pemrograman modern dan juga dikenal sebagai metode atau subrutin.

Pada tingkat yang luas, suatu fungsi mengambil beberapa input yang disebut parameter, melakukan tindakan tertentu pada input ini dan akhirnya mengembalikan nilai.


Kotlin Built-in Functions

Kotlin provides a number of built-in functions, we have used a number of buil-in functions in our examples. For example print() and println() are the most commonly used built-in function which we use to print an output to the screen.

Kotlin menyediakan sejumlah fungsi bawaan, kami telah menggunakan sejumlah fungsi bawaan dalam contoh kami. Misalnya print() dan println() adalah fungsi bawaan yang paling umum digunakan yang kita gunakan untuk mencetak output ke layar.

Example

fun main(args: Array<String>) {
   println("Hello, World!")
}

User-Defined Functions

Kotlin allows us to create our own function using the keyword fun. A user defined function takes one or more parameters, perform an action and return the result of that action as a value.

Kotlin memungkinkan kita untuk membuat fungsi kita sendiri menggunakan kata kunci fun. Fungsi yang ditentukan pengguna mengambil satu atau lebih parameter, melakukan tindakan, dan mengembalikan hasil tindakan itu sebagai nilai.

Syntax

fun functionName(){  
   // body of function 
}  

Once we defined a function, we can call it any number of times whenever it is needed. Following isa simple syntax to call a Kotlin function:

Setelah kami mendefinisikan suatu fungsi, kami dapat memanggilnya beberapa kali kapan pun diperlukan. Berikut adalah sintaks sederhana untuk memanggil fungsi Kotlin:

functionName()

Example

Following is an example to define and call a user-defined function which will print simple "Hello, World!":

Berikut adalah contoh untuk mendefinisikan dan memanggil fungsi yang ditentukan pengguna yang akan mencetak sederhana "Halo, Dunia!":

fun main(args: Array<String>) {
   printHello()
}

fun printHello(){
   println("Hello, World!")
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

Hello, World!

Function Parameters

A user-defined function can take zero or more parameters. Parameters are options and can be used based on requirement. For example, our above defined function did not make use of any paramenter.

Fungsi yang ditentukan pengguna dapat mengambil nol atau lebih parameter. Parameter adalah pilihan dan dapat digunakan berdasarkan kebutuhan. Misalnya, fungsi yang kami definisikan di atas tidak menggunakan parameter apa pun.

Example

Following is an example to write a user-defined function which will add two given numbers and print their sum:

Berikut ini adalah contoh untuk menulis fungsi yang ditentukan pengguna yang akan menambahkan dua angka yang diberikan dan mencetak jumlahnya:

fun main(args: Array<String>) {
   val a = 10
   val b = 20
   
   printSum(a, b)
   
}
fun printSum(a:Int, b:Int){  

   println(a + b)
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

30

Return Values

A kotlin function return a value based on requirement. Again it is very much optional to return a value.

To return a value, use the return keyword, and specify the return type after the function's parantheses

Fungsi kotlin mengembalikan nilai berdasarkan kebutuhan. Sekali lagi sangat opsional untuk mengembalikan nilai.

Untuk mengembalikan nilai, gunakan kata kunci kembali, dan tentukan jenis pengembalian setelah tanda kurung fungsi


Example

Following is an example to write a user-defined function which will add two given numbers and return the sum:

Berikut ini adalah contoh untuk menulis fungsi yang ditentukan pengguna yang akan menambahkan dua angka yang diberikan dan mengembalikan jumlahnya:

fun main(args: Array<String>) {
   val a = 10
   val b = 20
   
   val result = sumTwo(a, b)
   println( result )
   
}

fun sumTwo(a:Int, b:Int):Int{
   val x = a + b
   
   return x
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

30

Unit-returning Functions

If a function does not return a useful value, its return type is Unit. Unit is a type with only one value which is Unit.

If a function does not return a useful value, its return type is Unit. Unit is a type with only one value which is Unit.


fun sumTwo(a:Int, b:Int):Unit{
   val x = a + b
   
   println( x )
}

The Unit return type declaration is also optional. The above code is equivalent to:

Deklarasi tipe pengembalian unit juga opsional. Kode di atas setara dengan:

fun sumTwo(a:Int, b:Int){
   val x = a + b
   
   println( x )
}

Kotlin Recursive Function

Recursion functions are useful in many scenerios like calculating factorial of a number or generating fibonacci series. Kotlin supports recursion which means a Kotlin function can call itself.

Fungsi rekursi berguna dalam banyak pemandangan seperti menghitung faktorial suatu angka atau menghasilkan deret fibonacci. Kotlin mendukung rekursi yang berarti fungsi Kotlin dapat memanggil dirinya sendiri.


Syntax

fun functionName(){  
   ...
   functionName()
   ...
}  

Example

Following is a Kotlin program to calculate the factorial of number 10:

Berikut adalah program Kotlin untuk menghitung faktorial bilangan 10:

fun main(args: Array<String>) {
   val a = 4
   
   val result = factorial(a)
   println( result )
   
}

fun factorial(a:Int):Int{
   val result:Int
   
   if( a <= 1){
      result = a
   }else{
      result = a*factorial(a-1)
   }
   
   return result
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

24

Kotlin Tail Recursion

A recursive function is eligible for tail recursion if the function call to itself is the last operation it performs.

Fungsi rekursif memenuhi syarat untuk rekursi ekor jika panggilan fungsi ke dirinya sendiri adalah operasi terakhir yang dilakukannya.

Example

Following is a Kotlin program to calculate the factorial of number 10 using tail recursion. Here we need to ensure that the multiplication is done before the recursive call, not after.

Berikut ini adalah program Kotlin untuk menghitung faktorial bilangan 10 menggunakan rekursi ekor. Di sini kita perlu memastikan bahwa perkalian dilakukan sebelum pemanggilan rekursif, bukan setelahnya.

fun main(args: Array<String>) {
   val a = 4
   
   val result = factorial(a)
   println( result )
   
}

fun factorial(a: Int, accum: Int = 1): Int {
    val result = a * accum
    return if (a <= 1) {
        result
    } else {
        factorial(a - 1, result)
    }
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

24

Kotlin tail recursion is useful while calculating factorial or some other processing on large numbers. So to avoide java.lang.StackOverflowError, you must use tail recursion.

Rekursi ekor Kotlin berguna saat menghitung faktorial atau beberapa pemrosesan lainnya pada jumlah besar. Jadi untuk menghindari java.lang.StackOverflowError, Anda harus menggunakan rekursi ekor.


Higher-Order Functions

A higher-order function is a function that takes another function as parameter and/or returns a function.

Fungsi tingkat tinggi adalah fungsi yang mengambil fungsi lain sebagai parameter dan/atau mengembalikan fungsi.

Example

Following is a function which takes two integer parameters, a and b and additionally, it takes another function operation as a parameter:

Berikut ini adalah fungsi yang mengambil dua parameter integer, a dan b dan selain itu, dibutuhkan operasi fungsi lain sebagai parameter:

fun main(args: Array<String>) {
   
   val result = calculate(4, 5, ::sum) 
   println( result )
   
}
fun sum(a: Int, b: Int) = a + b 

fun calculate(a: Int, b: Int, operation:(Int, Int) -> Int): Int {
    return operation(a, b)                                       
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

9

Here we are calling the higher-order function passing in two integer values and the function argument ::sum. Here :: is the notation that references a function by name in Kotlin.

Di sini kita memanggil fungsi tingkat tinggi yang melewati dua nilai integer dan argumen fungsi ::sum. Di sini :: adalah notasi yang mereferensikan fungsi dengan nama di Kotlin.

Example

Let's look one more example where a function returns another function. Here we defined a higher-order function that returns a function. Here (Int) -> Int represents the parameters and return type of the square function.

Mari kita lihat satu contoh lagi di mana suatu fungsi mengembalikan fungsi lain. Di sini kita mendefinisikan fungsi tingkat tinggi yang mengembalikan fungsi. Di sini (Int) -> Int mewakili parameter dan tipe pengembalian dari fungsi kuadrat.

fun main(args: Array<String>) { 
   val func = operation() 
   println( func(4) )
   
}
fun square(x: Int) = x * x

fun operation(): (Int) -> Int {
    return ::square                                       
}

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

9

Kotlin Lambda Function

Kotlin lambda is a function which has no name and defined with a curly braces {} which takes zero or more parameters and body of function.

The body of function is written after variable (if any) followed by -> operator.


Kotlin lambda adalah fungsi yang tidak memiliki nama dan didefinisikan dengan kurung kurawal {} yang mengambil nol atau lebih parameter dan isi fungsi.

Tubuh fungsi ditulis setelah variabel (jika ada) diikuti oleh -> operator.

Syntax

{variable with type -> body of the function}  

Example

fun main(args: Array<String>) { 

   val upperCase = { str: String -> str.toUpperCase() }  

   println( upperCase("hello, world!") )
   
}                           

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:

HELLO, WORLD!

Kotlin Inline Function

An inline function is declared with inline keyword. The use of inline function enhances the performance of higher order function. The inline function tells the compiler to copy parameters and functions to the call site.

Fungsi sebaris dideklarasikan dengan kata kunci sebaris. Penggunaan fungsi inline meningkatkan kinerja fungsi tingkat tinggi. Fungsi inline memberitahu compiler untuk menyalin parameter dan fungsi ke situs panggilan.


Example

fun main(args: Array<String>) { 

   myFunction({println("Inline function parameter")})
   
}
inline fun myFunction(function:()-> Unit){
   println("I am inline function - A")  

   function()
   
   println("I am inline function - B")
}                               

When you run the above Kotlin program, it will generate the following output:

Ketika Anda menjalankan program Kotlin di atas, itu akan menghasilkan output berikut:


I am inline function - A
Inline function parameter
I am inline function - B

Quiz Time (Interview & Exams Preparation)

Q 1 - Which of the following is true about Kotlin functions?

A - Kotlin functions can take one or more parameters

B - Kotlin functions can be recursive

C - Kotlin functions can return values.

D - All of the above

Q 2 - What will be the output of the following program:

fun main(args: Array<String>) {

  val a = 100000
  
  val result = factorial(a)
  println( result )
  

}

fun factorial(a:Int):Int{

  val result:Int
  
  if( a <= 1){
     result = a
  }else{
     result = a*factorial(a-1)
  }
  
  return result

} A - This will print 0

B - This will raise just a warning

C - Compilation will stop with error

D - None of the above

Q 2 - What is Tail Recursion?

A - Calculations are performed first, then recursive calls are executed.

B - Tail Recursion avoids the risk of stack overflow

C - Recursive call passes the result of current step to the next recursive call

D - All of the above


Referensi