Koruyucular ve Bağlama
Eşleşmelerde koşullar
Koruyucular ve Bağlama, 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.
Koruyucu Nedir?
Koruyucu, if kullanarak bir duruma Boole koşulu ekler. Durum yalnızca desen uyduğunda ve koruyucu doğru olduğunda eşleşir.
Koruyucular, tek bir deseni değere göre daha ayrıntılı durumlara ayırmanızı sağlar.
if Koruyucusu Ekleme
Koruyucuyu desenden sonra yazın: case n if n > 0 =>. Koşul yanlışsa eşleştirme sonraki duruma devam eder.
object Main {
def sign(n: Int): String = n match {
case x if x > 0 => "positive"
case x if x < 0 => "negative"
case _ => "zero"
}
def main(args: Array[String]): Unit = {
println(sign(5))
println(sign(-3))
println(sign(0))
}
}Bağladıktan Sonra Koruma
Koruyucu, desende bağladığınız ada başvurabilir. Eşleşen değerin özelliklerini bu şekilde sınarsınız.
object Main {
def fizz(n: Int): String = n match {
case x if x % 15 == 0 => "FizzBuzz"
case x if x % 3 == 0 => "Fizz"
case x if x % 5 == 0 => "Buzz"
case x => x.toString
}
def main(args: Array[String]): Unit = {
println(fizz(15))
println(fizz(9))
println(fizz(7))
}
}Aralıklarda Koruyucular
Koruyucular, sabit desenlerin doğrudan ifade edemediği aralıklar için idealdir.
object Main {
def band(score: Int): String = score match {
case s if s >= 90 => "A"
case s if s >= 80 => "B"
case s if s >= 70 => "C"
case _ => "F"
}
def main(args: Array[String]): Unit = {
println(band(95))
println(band(83))
println(band(60))
}
}@ ile Desen Bağlama
@ sembolü, yapısını desenle eşleştirmeye devam ederken eşleşen değerin tamamını bir ada bağlar.
Burada whole @ pattern şu anlama gelir: pattern ile eşleştir ve eşleşen değere whole adını da ver.
object Main {
def main(args: Array[String]): Unit = {
val x: Any = 7
val msg = x match {
case n @ (_: Int) => s"int value is $n"
case _ => "other"
}
println(msg)
}
}Koleksiyonlarda Bağlama
@ bağlaması, bütün bir listeyi yakalarken başını da incelemek gibi yapılandırılmış desenlerde özellikle kullanışlıdır.
object Main {
def describe(xs: List[Int]): String = xs match {
case all @ (first :: _) => s"starts with $first, full = $all"
case Nil => "empty"
}
def main(args: Array[String]): Unit = {
println(describe(List(1, 2, 3)))
println(describe(Nil))
}
}Tür Deseni ve Koruyucuyu Birleştirme
Bir tür desenini koruyucuyla birleştirebilirsiniz. Önce tür denetlenir, ardından Boole koşulu değerlendirilir.
object Main {
def label(x: Any): String = x match {
case s: String if s.length > 3 => "long string"
case s: String => "short string"
case _ => "not a string"
}
def main(args: Array[String]): Unit = {
println(label("hello"))
println(label("hi"))
println(label(42))
}
}Birden Çok Koşul
Koruyucu yalnızca bir Boole ifadesidir; bu nedenle koşulları && ve || ile birleştirebilirsiniz.
object Main {
def category(age: Int): String = age match {
case a if a >= 13 && a <= 19 => "teen"
case a if a < 13 => "child"
case _ => "adult"
}
def main(args: Array[String]): Unit = {
println(category(15))
println(category(8))
println(category(40))
}
}Koruyucular Sonraki Duruma Geçmez
Bir desen eşleşir ancak koruyucusu yanlış olursa Scala aynı desenin sonraki koruyucusuna değil, sonraki duruma geçer.
Her koruyucuda başarısız olan değerleri yakalayabilecek daha sonraki bir durum bulunduğundan emin olun.
object Main {
def test(n: Int): String = n match {
case x if x > 100 => "big"
case x => s"not big: $x"
}
def main(args: Array[String]): Unit = {
println(test(200))
println(test(5))
}
}Koruyucular ve Bağlama Neden Kullanılır?
Koruyucular ve @ bağlamaları birlikte desen eşleştirmeyi ifade gücü yüksek hâle getirir:
- Koruyucular aralıklar ve bölünebilirlik gibi koşullar ekler
@, değerin yapısını ayrıştırırken tamamını yakalar- Dallanma mantığını kısa ve okunabilir tutar
Hepsini Bir Araya Getirme
Bu örnek değeri bağlar, bir koruyucuyu denetler ve geri dönüş seçeneği sunar.
object Main {
def temp(c: Int): String = c match {
case t if t >= 30 => s"hot ($t)"
case t if t >= 15 => s"mild ($t)"
case t => s"cold ($t)"
}
def main(args: Array[String]): Unit = {
println(temp(35))
println(temp(20))
println(temp(5))
}
}Kısa Kontrol
Koruyucuları ve bağlamayı ne kadar anladığınızı test edin.
Özet
Eşleştirmeleri ayrıntılandırmayı öğrendiniz:
- Koruyucu, bir desenden sonra gelen
ifkoşuludur - Koruyucu yanlışsa eşleştirme sonraki duruma geçer
@işleci, yapıyı ayrıştırırken değerin tamamını bağlar- Koruyucular tür desenleri ve Boole işleçleriyle birleştirilebilir
Sıkça Sorulan Sorular
“Koruyucular ve Bağlama” dersi ücretsiz mi?
Evet — “Koruyucular ve Bağlama” 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.
“Koruyucular ve Bağlama” dersinde ne öğreneceğim?
Eşleşmelerde koşullar 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.
“Koruyucular ve Bağlama” 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
- match İfadeleri
- Türleri ve Değerleri Eşleştirme
- Koruyucular ve Bağlama
- Yapıdan Ayırma