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)veyaNone'dur- Olası yokluğu tür içinde açıkça belirtir
isDefined/isEmptyile veya kalıp eşleştirmeyle denetleyin- Nullable değerleri sarmak için
Option(x)kullanın headOptionveMap.getgibi 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.