Scala for Backend Engineering & Functional Programming · Ders

Option üzerinde map ve flatMap

Güvenli biçimde birleştirin

2. ders / 413 adım

Option üzerinde map ve flatMap, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 2. 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.

Bir Option'ı Dönüştürme

Çoğu zaman bir Option değeriniz olur ve değer mevcutsa onu dönüştürmek, None durumunu ise olduğu gibi bırakmak istersiniz.

map yöntemi, değeri elle dışarı çıkarmadan tam olarak bunu yapar.

map Kullanma

map, bir Some içindeki değere bir fonksiyon uygular ve yeni bir Some döndürür. None üzerinde hiçbir şey yapmaz ve None döndürür.

object Main {
  def main(args: Array[String]): Unit = {
    val n: Option[Int] = Some(10)
    val doubled = n.map(x => x * 2)
    println(doubled)
  }
}

None Üzerinde map

Option None olduğunda map, fonksiyonu tamamen atlar ve None olarak kalır.

Temel güvenlik özelliği budur: dönüşümler yokluk durumunda etkisizdir.

object Main {
  def main(args: Array[String]): Unit = {
    val empty: Option[Int] = None
    val result = empty.map(x => x * 2)
    println(result)
  }
}

Türü Değiştirme

map, koleksiyonlarda olduğu gibi farklı bir türe dönüşüm yapabilir. Burada bir Option[Int], Option[String] hâline gelir.

object Main {
  def main(args: Array[String]): Unit = {
    val n: Option[Int] = Some(7)
    val label = n.map(x => s"value=$x")
    println(label)
  }
}

İç İçe Geçme Sorunu

Fonksiyonunuzun kendisi bir Option döndürürse ne olur? map kullanmak, kullanımı zahmetli olan iç içe bir Option[Option[A]] oluşturur.

flatMap burada devreye girer.

object Main {
  def half(x: Int): Option[Int] = if (x % 2 == 0) Some(x / 2) else None
  def main(args: Array[String]): Unit = {
    val n: Option[Int] = Some(8)
    val nested = n.map(half)
    println(nested)
  }
}

flatMap Kullanma

flatMap, bir Option döndüren fonksiyonu uygular ve sonucu tek bir Option içinde düzleştirir.

Bu çıktıyı önceki sahnedeki iç içe sürümle karşılaştırın.

object Main {
  def half(x: Int): Option[Int] = if (x % 2 == 0) Some(x / 2) else None
  def main(args: Array[String]): Unit = {
    val n: Option[Int] = Some(8)
    val flat = n.flatMap(half)
    println(flat)
  }
}

flatMap Zinciri Oluşturma

Her adım bir Option döndürdüğü için birkaç flatMap çağrısını zincirleyebilirsiniz. Herhangi bir adım None üretirse tüm zincir None olur.

object Main {
  def half(x: Int): Option[Int] = if (x % 2 == 0) Some(x / 2) else None
  def main(args: Array[String]): Unit = {
    val result = Some(16).flatMap(half).flatMap(half)
    println(result)
  }
}

None Durumunda Kısa Devre

Ortadaki bir adım None döndürürse sonraki adımlar atlanır ve nihai sonuç None olur.

Bu otomatik kısa devre, elle yapılan null denetimlerini ortadan kaldırır.

object Main {
  def half(x: Int): Option[Int] = if (x % 2 == 0) Some(x / 2) else None
  def main(args: Array[String]): Unit = {
    val result = Some(8).flatMap(half).flatMap(half)
    println(result)
  }
}

map ve flatMap'i Birleştirme

Option döndüren adımlar için flatMap, son sıradan dönüşüm için map kullanın.

object Main {
  def parse(s: String): Option[Int] = s.toIntOption
  def main(args: Array[String]): Unit = {
    val result = Some("21").flatMap(parse).map(_ * 2)
    println(result)
  }
}

map ve flatMap neden kullanılır?

Bu yöntemler şunları yapmanızı sağlar:

  • Değerleri ambalajından çıkarmadan dönüştürme
  • None üzerinde çalışmayı otomatik olarak atlama
  • Başarısız olabilecek işlemleri zincirleme
  • flatten ile iç içe Option[Option[A]] yapısından kaçınma

Hepsini Bir Araya Getirme

Gerçekçi bir zincir: bir anahtarı arayın, ayrıştırın, ardından güvenli bir şekilde dönüştürün.

object Main {
  val config = Map("port" -> "8080")
  def main(args: Array[String]): Unit = {
    val port = config.get("port").flatMap(_.toIntOption).map(_ + 1)
    println(port)
    val missing = config.get("host").flatMap(_.toIntOption)
    println(missing)
  }
}

Kısa Kontrol

map ve flatMap anlayışınızı test edin.

Özet

Option'ları birleştirmeyi öğrendiniz:

  • map, bir Some içindeki değeri dönüştürür ve None değerini olduğu gibi bırakır
  • flatMap, Option döndüren bir işlev uygular ve sonucu düzleştirir
  • Herhangi bir adım None ise zincirleme işlemi kısa devre yaparak None sonucuna ulaşır
  • Option döndüren adımlar için flatMap, sıradan adımlar için map kullanın
Başlamak ücretsiz

Yapay zeka eğitmeniyle Scala öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
39
Dersler
143

Sıkça Sorulan Sorular

“Option üzerinde map ve flatMap” dersi ücretsiz mi?

Evet — “Option üzerinde map ve flatMap” 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.

“Option üzerinde map ve flatMap” dersinde ne öğreneceğim?

Güvenli biçimde birleştirin 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 2. dersidir.

“Option üzerinde map ve flatMap” 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