getOrElse ve fold
Değerleri çıkarın
getOrElse ve fold, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 3. 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.
Değeri Dışarı Alma
Sonunda bir Option içinden sıradan bir değer çıkarmanız ve değer None olduğunda mantıklı bir değer sağlamanız gerekir.
Scala bunun için getOrElse ve fold gibi güvenli çıkarma yöntemleri sunar.
getOrElse Kullanımı
getOrElse, bir Some içindeki değeri döndürür; değer None olduğunda ise sağladığınız varsayılan değeri döndürür.
Size her zaman sıradan bir değer verir, hiçbir zaman bir Option vermez.
object Main {
def main(args: Array[String]): Unit = {
val a: Option[Int] = Some(5)
val b: Option[Int] = None
println(a.getOrElse(0))
println(b.getOrElse(0))
}
}Varsayılan Değer Tembel Değerlendirilir
getOrElse içindeki varsayılan değer yalnızca Option None olduğunda değerlendirilir. Bu nedenle bir değer mevcutken maliyetli bir varsayılan değer hiçbir maliyete yol açmaz.
object Main {
def expensiveDefault(): Int = { println("computing default"); 99 }
def main(args: Array[String]): Unit = {
val present: Option[Int] = Some(7)
println(present.getOrElse(expensiveDefault()))
}
}get Kullanımından Kaçının
Option'ın bir get yöntemi vardır; ancak bu yöntem None üzerinde bir özel durum fırlatır. Bu da Option kullanmanın amacını ortadan kaldırır.
Bunun yerine getOrElse, fold veya desen eşleştirmeyi tercih edin.
Yedek Option'lar için orElse
orElse farklı çalışır: ilk Option bir Some ise onu döndürür; aksi takdirde yedek bir Option döndürür.
Kendileri boş olabilecek alternatifleri denemek için kullanın.
object Main {
def main(args: Array[String]): Unit = {
val primary: Option[Int] = None
val backup: Option[Int] = Some(42)
println(primary.orElse(backup))
}
}fold ile Tanışma
fold, her iki durumu tek bir çağrıda ele alır. Önce None için bir varsayılan değer, ardından Some değeri için bir işlev verirsiniz.
Tek bir sonuç döndürür ve değer mevcut olduğunda onu dönüştürür.
object Main {
def main(args: Array[String]): Unit = {
val n: Option[Int] = Some(10)
val result = n.fold(0)(x => x * 2)
println(result)
}
}None Üzerinde fold
Option None olduğunda fold, önce verdiğiniz varsayılan değeri döndürür ve dönüştürme işlevini yok sayar.
object Main {
def main(args: Array[String]): Unit = {
val empty: Option[Int] = None
val result = empty.fold(-1)(x => x * 2)
println(result)
}
}Farklı Bir Türe fold
fold işleminin her iki dalı da aynı türü döndürmelidir; ancak bu tür, Option'ın değer türünden farklı olabilir.
Burada bir Option[Int] değerini String türüne dönüştürüyoruz.
object Main {
def describe(o: Option[Int]): String =
o.fold("missing")(x => s"value $x")
def main(args: Array[String]): Unit = {
println(describe(Some(8)))
println(describe(None))
}
}Aralarından Seçim Yapma
Kısa kılavuz:
getOrElse: aynı türde bir varsayılan değer sağlarorElse: yedek bir Option sağlarfold: değeri dönüştürür ve tek adımda varsayılan değer sağlar- desen eşleştirme: her durum daha fazla mantık gerektirdiğinde
map ile Birleştirme
Yaygın bir kullanım biçimi, önce dönüştürmek için map, ardından sıradan bir değere ulaşmak için getOrElse kullanmaktır.
object Main {
def main(args: Array[String]): Unit = {
val name: Option[String] = Some("ada")
val display = name.map(_.toUpperCase).getOrElse("ANON")
println(display)
}
}Hepsini Bir Araya Getirme
Bir yapılandırma değerini arayın, yedek bir Option sağlayın, ardından getOrElse ile varsayılan bir değere ulaşın.
object Main {
val env = Map("timeout" -> "30")
def main(args: Array[String]): Unit = {
val timeout = env.get("timeout")
.flatMap(_.toIntOption)
.getOrElse(60)
println(timeout)
val retries = env.get("retries").fold(3)(_.toInt)
println(retries)
}
}Kısa Kontrol
Option değerlerini çıkarma anlayışınızı test edin.
Özet
Option değerlerini güvenli bir şekilde çıkarmayı öğrendiniz:
getOrElse(default), değeri veya tembel olarak değerlendirilen bir varsayılan değeri döndürürorElse(fallback), ilk Some değerini veya yedek bir Option'ı döndürürfold(default)(f), bir Some değerini dönüştürür ve bir None için tek adımda varsayılan değer kullanır- None üzerinde özel durum fırlatan
getkullanımından kaçının
Sıkça Sorulan Sorular
“getOrElse ve fold” dersi ücretsiz mi?
Evet — “getOrElse ve fold” 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.
“getOrElse ve fold” dersinde ne öğreneceğim?
Değerleri çıkarın 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 3. dersidir.
“getOrElse ve fold” 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.