0Pricing
Scala for Backend Engineering & Functional Programming · Ders

null'dan Kaçınma

Option temelleri

null'dan Kaçınma, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

null Sorunu

Birçok dilde eksik bir değer null ile gösterilir. Ancak kontrol etmeyi unuttuğunuzda null, korkulan NullPointerException'a neden olur.

Scala daha güvenli bir alternatif sunar: Option türü.

Option Nedir?

Option[A], bir değerin mevcut olup olmayabileceğini temsil eder. Tam olarak iki durumu vardır:

  • Değer mevcut olduğunda Some(value)
  • Değer olmadığında None

Türün kendisi, bir değerin eksik olabileceğini size bildirir.

object Main {
  def main(args: Array[String]): Unit = {
    val present: Option[Int] = Some(42)
    val absent: Option[Int] = None
    println(present)
    println(absent)
  }
}

Some Oluşturma

Kesinlikle mevcut olduğunu belirtmek için var olan bir değeri Some içine sarın.

object Main {
  def main(args: Array[String]): Unit = {
    val name: Option[String] = Some("Ada")
    println(name)
  }
}

None ile Yokluğu Temsil Etme

None, hiçbir şey olmadığında kullanılan tek değerdir. Herhangi bir Option türüyle çalışır.

object Main {
  def lookup(found: Boolean): Option[Int] =
    if (found) Some(100) else None
  def main(args: Array[String]): Unit = {
    println(lookup(true))
    println(lookup(false))
  }
}

Başarısız Olabilecek Fonksiyonlar

Option döndürmek, sonuç alınamama olasılığını tür imzasında açıkça belirtir. Çağıranlar bunu göz ardı edemez.

object Main {
  def findUser(id: Int): Option[String] =
    if (id == 1) Some("Grace") else None
  def main(args: Array[String]): Unit = {
    println(findUser(1))
    println(findUser(2))
  }
}

isDefined ve isEmpty ile Denetleme

isDefined, bir Option'ın Some olup olmadığını; isEmpty ise None olup olmadığını bildirir.

object Main {
  def main(args: Array[String]): Unit = {
    val a: Option[Int] = Some(5)
    val b: Option[Int] = None
    println(a.isDefined)
    println(b.isEmpty)
  }
}

Bir Option Üzerinde Kalıp Eşleştirme

Option sealed bir ADT olduğu için üzerinde kalıp eşleştirme yapabilirsiniz. Bu, var olma ve yok olma durumlarını açıkça ele alır.

object Main {
  def greet(name: Option[String]): String = name match {
    case Some(n) => s"Hello, $n"
    case None    => "Hello, stranger"
  }
  def main(args: Array[String]): Unit = {
    println(greet(Some("Bo")))
    println(greet(None))
  }
}

Nullable Değerlerden Option Oluşturma

null döndüren kodla çalışmanız gerekiyorsa onu Option(...) ile sarın. Bu işlem null değerini None'a, gerçek herhangi bir değeri de Some'a dönüştürür.

object Main {
  def main(args: Array[String]): Unit = {
    val maybe = Option("data")
    val nothing = Option(null)
    println(maybe)
    println(nothing)
  }
}

Standart Kütüphane Option Döndürür

Yerleşik birçok yöntem, hata riski oluşturmak yerine zaten Option döndürür. Örneğin List.headOption, boş listeleri güvenli biçimde ele alır.

object Main {
  def main(args: Array[String]): Unit = {
    val xs = List(1, 2, 3)
    val empty = List.empty[Int]
    println(xs.headOption)
    println(empty.headOption)
  }
}

Neden null Yerine Option?

Option, şu nedenlerle null'dan daha iyidir:

  • Eksik değerleri tür içinde görünür kılar
  • Çağıranları, değerin olmadığı durumu ele almaya zorlar
  • NullPointerExceptions'ı ortadan kaldırır
  • map, flatMap ve for-comprehension'larla birleştirilebilir

Hepsini Bir Araya Getirme

Option döndüren ve ardından kalıp eşleştirmeyle güvenli biçimde işlenen küçük bir arama işlemi.

object Main {
  val prices = Map("apple" -> 3, "pear" -> 5)
  def priceOf(item: String): Option[Int] = prices.get(item)
  def main(args: Array[String]): Unit = {
    priceOf("apple") match {
      case Some(p) => println(s"costs $p")
      case None    => println("not for sale")
    }
    println(priceOf("banana"))
  }
}

Kısa Kontrol

Option'ı anlayışınızı test edin.

Özet

Option ile null'dan kaçınmayı öğrendiniz:

  • Option[A], Some(value) veya None'dur
  • Olası yokluğu tür içinde açıkça belirtir
  • isDefined/isEmpty ile veya kalıp eşleştirmeyle denetleyin
  • Nullable değerleri sarmak için Option(x) kullanın
  • headOption ve Map.get gibi kütüphane yöntemleri Option döndürür

Sıkça Sorulan Sorular

“null'dan Kaçınma” dersi ücretsiz mi?

Evet — “null'dan Kaçınma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.

“null'dan Kaçınma” dersinde ne öğreneceğim?

Option temelleri Scala for Backend Engineering & Functional Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“null'dan Kaçınma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Scala for Backend Engineering & Functional Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. null'dan Kaçınma
  2. Option üzerinde map ve flatMap
  3. getOrElse ve fold
  4. for-comprehension'larda Option
← Scala for Backend Engineering & Functional Programming Sayfasına Dön