0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Scala 3 given/using

Modern sözdizimi

Scala 3 given/using, 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.

Scala 3'te modern örtük değerler

Scala 3, aşırı yüklenmiş implicit anahtar sözcüğünü daha anlaşılır bir söz dizimiyle değiştirir: given bir örtük değer tanımlar, using ise örtük bir parametre bildirir. Amaç artık çok daha kolay okunur.

object Main:
  given greeting: String = "Hello"
  def greet(name: String)(using g: String): String = s"$g, $name!"
  def main(args: Array[String]): Unit =
    println(greet("Ann"))

implicit val yerine given

Scala 2'de implicit val x: T = ... yazılan yerde Scala 3'te given x: T = ... yazılır. Bu, örtük çözümleme için kullanılabilir bir değer bildirir.

object Main:
  given factor: Int = 10
  def scale(x: Int)(using f: Int): Int = x * f
  def main(args: Array[String]): Unit =
    println(scale(5))

Örtük parametrelerin yerine using

using yan tümcesi bir parametre listesini örtük olarak işaretler. Derleyici listeyi kapsamdaki eşleşen bir given değerinden doldurur.

object Main:
  given unit: String = "kg"
  def label(n: Int)(using u: String): String = s"$n$u"
  def main(args: Array[String]): Unit =
    println(label(75))

Adsız given değerleri

Bir given değerine doğrudan başvurmayacaksanız adını atlayabilirsiniz. Derleyici onu yine türe göre bulur.

object Main:
  given Int = 3
  def triple(x: Int)(using f: Int): Int = x * f
  def main(args: Array[String]): Unit =
    println(triple(7))

summon ile değer çağırma

Scala 3'ün summon[T] ifadesi implicitly[T] yerine kullanılır. T türündeki given değerini doğrudan alır.

object Main:
  given name: String = "Scala 3"
  def main(args: Array[String]): Unit =
    val n = summon[String]
    println(n)

Adsız using parametreleri

Bir using parametresini yalnızca iletmeniz gerekiyorsa yan tümcede adını yazmayabilirsiniz: (using Int). İçeride bu parametreyi summon ile çağırabilirsiniz.

object Main:
  given Int = 100
  def boosted(x: Int)(using Int): Int = x + summon[Int]
  def main(args: Array[String]): Unit =
    println(boosted(5))

Tür sınıfları için given

given/using için en deyimsel kullanım tür sınıflarıdır. Bir özellik tanımlayın, bir given örneği sağlayın ve bunu using ile gerektirin.

trait Show[A]:
  def show(a: A): String

object Main:
  given Show[Int] with
    def show(a: Int): String = s"Int($a)"

  def display[A](a: A)(using s: Show[A]): String = s.show(a)

  def main(args: Array[String]): Unit =
    println(display(42))

Bağlam sınırları hâlâ çalışır

[A: Show] bağlam sınırları kullanılmaya devam eder ve bir using parametresine dönüştürülür. Örneğe erişmek için summon ile birlikte kullanın.

trait Show[A]:
  def show(a: A): String

object Main:
  given Show[String] with
    def show(a: String): String = s"Str($a)"

  def display[A: Show](a: A): String = summon[Show[A]].show(a)

  def main(args: Array[String]): Unit =
    println(display("hi"))

using bağımsız değişkenlerini açıkça aktarma

Bir using parametresini çağrı noktasında using anahtar sözcüğüyle açıkça sağlayabilir ve kapsamda bulunan given değerini geçersiz kılabilirsiniz.

object Main:
  given Int = 10
  def scale(x: Int)(using f: Int): Int = x * f
  def main(args: Array[String]): Unit =
    println(scale(5))
    println(scale(5)(using 2))

given içe aktarımları

Scala 3, given değerlerini içe aktarmak için özel bir söz dizimine sahiptir: import pkg.given veya import pkg.{given Show[Int]}. Bu, örtük içe aktarımları açık ve bilinçli hâle getirir.

object Instances:
  given Int = 5

object Main:
  import Instances.given
  def addBase(x: Int)(using b: Int): Int = x + b
  def main(args: Array[String]): Unit =
    println(addBase(10))

Yeni söz diziminin nedeni

Scala 2'de tek bir implicit anahtar sözcüğü birkaç farklı anlama geliyordu. Scala 3 bu kavramı ayırır: given = sağla, using = gerektir. Kod daha anlaşılır, hatalar da daha kolay kavranır.

object Main:
  given pi: Double = 3.14159
  def area(r: Double)(using p: Double): Double = p * r * r
  def main(args: Array[String]): Unit =
    println(area(2.0))

Hızlı kontrol

Scala 3'te değer sağlamak ve gerektirmek için implicit yerine hangi anahtar sözcükler kullanılır?

Özet

Scala 3'ün given/using yapısını öğrendiniz:

  • given bir örtük değer sağlar (implicit val yerine kullanılır)
  • using bir örtük parametre bildirir
  • summon[T], implicitly[T] yerine kullanılır
  • Given değerleri adsız olabilir ve tür sınıfları için idealdir
  • import pkg.given ile açıkça içe aktarılır

Sıkça Sorulan Sorular

“Scala 3 given/using” dersi ücretsiz mi?

Evet — “Scala 3 given/using” 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 given/using” dersinde ne öğreneceğim?

Modern 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 given/using” 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. Örtük Parametreler
  2. Scala 3 given/using
  3. Örtük Dönüşümler
  4. Genişletme Yöntemleri
← Scala for Backend Engineering & Functional Programming Sayfasına Dön