Option üzerinde map ve flatMap
Güvenli biçimde birleştirin
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, birSomeiçindeki değeri dönüştürür veNonedeğerini olduğu gibi bırakırflatMap, Option döndüren bir işlev uygular ve sonucu düzleştirir- Herhangi bir adım
Noneise zincirleme işlemi kısa devre yaparakNonesonucuna ulaşır - Option döndüren adımlar için
flatMap, sıradan adımlar içinmapkullanın
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
- null'dan Kaçınma
- Option üzerinde map ve flatMap
- getOrElse ve fold
- for-comprehension'larda Option