Scala - Fonksiyon Türleri Ve Kullanımı

Posted by dogukanhan on March 04, 2019 · 1 min read

Bu yazımda scala’da fonkisyonların tanımlanması ve kullanımına yönelik bir içerik oluşturmaya amaçlıyorum. Scala’da fonkisyonların Java’ya oranla daha farklı ve bana göre güzel özelliklerinin olduğunu söyleyebiliriz.

Parametresiz Void(Unit) Fonksiyon

Bu fonksiyonun return değeri yoktur yani fonksiyon çalıştıktan sonra bir sonuç üretmez ve scalada kullanımı fazlaca önerilmeyen bir türdür. Java’da return değeri olmadığı için void scalada ise unit olarak adlandırılmaktadır. Ayrıca fonksiyon çağrılırken herhangi bir değişken kullanılmaz.

def simpleFunction() = {
    println("Hello World")
  }

  simpleFunction() 
  simpleFunction // Parametresiz fonksiyon çağırma.

Parametreli Void(Unit) Fonksiyon

Bu fonksiyonda yine return değeri yoktur fakat aldığı argümanlar ile değişik biçimlerde çalışabilmektedir.

def sayHello(name:String) = {
    println("Merhaba "+name)
  }

  sayHello("dogukan")

Parametreli Void(Unit) Fonksiyon Default Değer

Default değerler fonksiyonun aldığı parametrelerin gönderilmediği zamanda yerine önceden belirlenen sabitin atanmasını sağlamaktadır. Birden fazla default değer sahibi fonksiyonumuz var ise hangi değeri argüman olarak gönderdiğimizi belirtmek zorundayız.

def sayHello(name:String="dogukan") = {
    println("Merhaba "+name)
  }
  sayHello("onur")
  sayHello()

  def sayHelloWithAge(name:String="dogukan",age:Int=21) ={
    println("Merhaba "+name+" "+age)

  }
  sayHelloWithAge(name="mert")
  sayHelloWithAge(age=19)
  sayHelloWithAge("onur",30)

Parametreli Void(Unit) Olmayan Default Değerli Fonksiyon

Fonksiyonun Unit olmaması için parametrelerini belirttikten sonra verilen tip ile sağlanmaktadır. Fonksiyonun dönüş değeri yine aynı tipte bir değişkene atama yapılabilir.

def getHelloString(name:String="dogukan",age:Int=21):String ={
    "Merhaba "+name+" "+age
  }
  var helloString = getHelloString("kagan")

Fonksiyonlarda bir diğer önemli konu ise call by name ve call by value konularıdır bu konuları linkteki yazım üzerinden okuyabilirsiniz.

https://www.geeksforgeeks.org/scala-functions-basics/