0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Scala 3'te Enum'lar

Yeni enum sözdizimi

Scala 3'te Enum'lar, 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.

Yeni enum Anahtar Sözcüğü

Scala 3, birinci sınıf bir enum yapısı ekler. Bu yapı, Scala 2'deki ayrıntılı mühürlü trait ve durum nesneleri örüntüsünün yerini özlü bir söz dizimiyle alır.

  • Her durum, enum türünün bir değeri olur.
  • Derleyici yararlı yardımcıları otomatik olarak oluşturur.
enum Color:
  case Red, Green, Blue

object Main:
  def main(args: Array[String]): Unit =
    println(Color.Red)

Tüm Değerleri Listeleme

Her basit enum, tüm durumları içeren bir dizi olan values ve ada göre arama yapan valueOf üyelerine sahip bir eşlikçi alır.

enum Color:
  case Red, Green, Blue

object Main:
  def main(args: Array[String]): Unit =
    Color.values.foreach(println)
    println(Color.valueOf("Green"))

Sıra Numarası ve Ad

Her enum değeri bir ordinal (sıfır tabanlı konum) ve durum adını kullanan, oluşturulmuş bir toString değerine sahiptir.

enum Color:
  case Red, Green, Blue

object Main:
  def main(args: Array[String]): Unit =
    println(Color.Blue.ordinal)
    println(Color.Red.ordinal)

Parametreli Enum'lar

Enum durumları yapıcı parametreleri alabilir ve böylece her değere ilişkili veriler sağlayabilir. Bu, RGB kodları veya gezegen kütleleri gibi sabitleri saklamak için kullanışlıdır.

enum Planet(val mass: Double):
  case Earth extends Planet(5.97e24)
  case Mars  extends Planet(6.42e23)

object Main:
  def main(args: Array[String]): Unit =
    println(Planet.Earth.mass)
    println(Planet.Mars.mass)

Enum'lar Üzerinde Yöntemler

Bir enum gövdesinin içinde yöntemler tanımlayabilirsiniz. Bu yöntemler, bir sınıftaki yöntemler gibi her değerde kullanılabilir.

enum Direction:
  case North, South, East, West
  def opposite: Direction = this match
    case North => South
    case South => North
    case East  => West
    case West  => East

object Main:
  def main(args: Array[String]): Unit =
    println(Direction.North.opposite)

Genel ADT Enum'ları

Enum'lar genel ve parametreli olabilir; bu sayede cebirsel veri türlerini modelleyebilirsiniz. Aşağıda basitleştirilmiş bir Option türü verilmiştir.

enum Maybe[+A]:
  case Just(value: A)
  case Nothing

object Main:
  def main(args: Array[String]): Unit =
    val a: Maybe[Int] = Maybe.Just(42)
    println(a)

Özyinelemeli ADT Enum'ları

Enum'lar özyinelemeli yapılarda çok kullanışlıdır. İkili bir ağaç veya bağlı liste, bir durumlar kümesi olarak temiz ve anlaşılır biçimde ifade edilir.

enum Tree[+A]:
  case Leaf(value: A)
  case Branch(left: Tree[A], right: Tree[A])

object Main:
  def main(args: Array[String]): Unit =
    val t = Tree.Branch(Tree.Leaf(1), Tree.Leaf(2))
    println(t)

Enum'lar Üzerinde Örüntü Eşleme

Enum'lar mühürlü olduğundan derleyici, bir match ifadesinin tüm durumları kapsayıp kapsamadığını denetleyebilir. Bir durumu eksik bırakmak uyarı oluşturur.

enum Light:
  case Red, Yellow, Green

object Main:
  def action(l: Light): String = l match
    case Light.Red    => "stop"
    case Light.Yellow => "slow"
    case Light.Green  => "go"

  def main(args: Array[String]): Unit =
    println(action(Light.Green))

Java ile Uyumlu Enum'lar

scala.reflect.Enum öğesinden otomatik olarak türeterek extends java.lang.Enum davranışını ekleyebilirsiniz; gerçek Java birlikte çalışabilirliği için enum X extends Enum[X] yazın... ancak çoğu kod, gerektiğinde Java ile iyi birlikte çalışabilen sade biçimi kullanır.

enum Suit:
  case Hearts, Diamonds, Clubs, Spades

object Main:
  def main(args: Array[String]): Unit =
    println(Suit.values.length)
    println(Suit.Spades.ordinal)

Alanları ve Yöntemleri Birleştirme

Zengin alan modelleri oluşturmak için parametreli durumları ortak yöntemlerle birlikte kullanabilirsiniz.

enum Currency(val symbol: String):
  case USD extends Currency("$")
  case EUR extends Currency("\u20ac")
  def format(amount: Double): String = s"$symbol$amount"

object Main:
  def main(args: Array[String]): Unit =
    println(Currency.USD.format(9.99))

enum Ne Zaman Kullanılmalı

Kapalı bir seçenek kümeniz veya cebirsel bir veri türünüz olduğunda enum kullanın.

  • Basit numaralandırmalar için yalın durumlar.
  • ADT'ler ve toplam türler için parametreli durumlar.
  • Otomatik tüm durum denetimleri, yeniden düzenlemeleri güvenli kılar.
enum Result[+E, +A]:
  case Ok(value: A)
  case Err(error: E)

object Main:
  def main(args: Array[String]): Unit =
    val r: Result[String, Int] = Result.Ok(7)
    println(r)

Hızlı Kontrol

Scala 3 enum'ları konusundaki anlayışınızı sınayın.

Özet

Scala 3 enum'larını öğrendiniz.

  • Özlü enum, mühürlü trait için gereken kalıp kodun yerini alır.
  • Basit enum'lar values, valueOf ve ordinal üyelerini alır.
  • Durumlar, ilişkili veriler için parametre alabilir.
  • Genel ve özyinelemeli enum'lar ADT'leri modeller.
  • Mühürlü yapı, tüm durumları kapsayan örüntü eşlemeyi mümkün kılar.
enum Weekday:
  case Mon, Tue, Wed, Thu, Fri
  def isStart: Boolean = this == Mon

object Main:
  def main(args: Array[String]): Unit =
    println(Weekday.Mon.isStart)
    println(Weekday.values.length)

Sıkça Sorulan Sorular

“Scala 3'te Enum'lar” dersi ücretsiz mi?

Evet — “Scala 3'te Enum'lar” 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.

“Scala 3'te Enum'lar” dersinde ne öğreneceğim?

Yeni enum sözdizimi 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.

“Scala 3'te Enum'lar” 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. Anlamlı Girintileme
  2. Scala 3'te Enum'lar
  3. Opak Türler
  4. Birleşim ve Kesişim Türleri
← Scala for Backend Engineering & Functional Programming Sayfasına Dön