Scala for Backend Engineering & Functional Programming · Pelajaran

Fungsi sebagai Nilai

Fungsi kelas satu.

Pelajaran 1 dari 413 langkah

Fungsi sebagai Nilai adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Fungsi adalah nilai

Dalam Scala, fungsi merupakan nilai kelas satu. Anda dapat menyimpannya dalam variabel, meneruskannya sebagai argumen, dan mengembalikannya dari fungsi lain, seperti halnya angka atau string.

object Main {
  def main(args: Array[String]): Unit = {
    val increment: Int => Int = x => x + 1
    println(increment(5))
  }
}

Sintaks tipe fungsi

Tipe Int => String berarti fungsi yang menerima Int dan mengembalikan String. Beberapa parameter ditulis menggunakan tanda kurung: (Int, Int) => Int.

object Main {
  def main(args: Array[String]): Unit = {
    val add: (Int, Int) => Int = (a, b) => a + b
    val label: Int => String = n => s"value=$n"
    println(add(3, 4))
    println(label(7))
  }
}

Sintaks lambda (fungsi anonim)

Fungsi anonim, atau lambda, ditulis sebagai (params) => body. Fungsi ini tidak memiliki nama dan sering langsung diteruskan ke fungsi lain.

object Main {
  def main(args: Array[String]): Unit = {
    val square = (x: Int) => x * x
    println(square(6))
  }
}

Fungsi tingkat tinggi

Fungsi tingkat tinggi adalah fungsi yang menerima fungsi sebagai parameter atau mengembalikan fungsi. map dan filter adalah contoh klasiknya.

object Main {
  def applyTwice(f: Int => Int, x: Int): Int = f(f(x))
  def main(args: Array[String]): Unit = {
    println(applyTwice(_ + 3, 10))
  }
}

Meneruskan fungsi ke metode

Metode koleksi menerima fungsi. Anda dapat meneruskan lambda secara langsung atau meneruskan nilai fungsi yang memiliki nama.

object Main {
  def main(args: Array[String]): Unit = {
    val triple = (x: Int) => x * 3
    println(List(1, 2, 3).map(triple))
    println(List(1, 2, 3).map(x => x * 3))
  }
}

Mengembalikan fungsi

Sebuah fungsi dapat mengembalikan fungsi lain. Di sini, multiplier mengembalikan fungsi yang mengalikan dengan faktor tetap, sebagai pabrik fungsi sederhana.

object Main {
  def multiplier(factor: Int): Int => Int = x => x * factor
  def main(args: Array[String]): Unit = {
    val timesTen = multiplier(10)
    println(timesTen(5))
  }
}

Metode vs fungsi

def mendefinisikan sebuah metode. Anda dapat mengubah metode menjadi nilai fungsi dengan garis bawah ekspansi eta: methodName _, atau cukup menggunakannya di tempat yang mengharapkan fungsi.

object Main {
  def doubleIt(x: Int): Int = x * 2
  def main(args: Array[String]): Unit = {
    val f: Int => Int = doubleIt
    println(f(8))
    println(List(1, 2, 3).map(doubleIt))
  }
}

Fungsi tanpa parameter

Sebuah fungsi dapat tidak menerima argumen. Tipe ini ditulis sebagai () => T. Hal ini berguna untuk menunda perhitungan.

object Main {
  def main(args: Array[String]): Unit = {
    val greeting: () => String = () => "Hello!"
    println(greeting())
  }
}

Menyimpan fungsi dalam koleksi

Karena fungsi adalah nilai, Anda dapat menyimpannya dalam daftar atau peta dan mencarinya secara dinamis, sehingga membangun pengarah perintah kecil.

object Main {
  def main(args: Array[String]): Unit = {
    val ops: Map[String, (Int, Int) => Int] = Map(
      "add" -> (_ + _),
      "mul" -> (_ * _)
    )
    println(ops("add")(3, 4))
    println(ops("mul")(3, 4))
  }
}

Fungsi sebagai konfigurasi

Meneruskan fungsi memungkinkan pemanggil menyesuaikan perilaku. Di sini, transformAll generik menerapkan fungsi apa pun ke seluruh daftar.

object Main {
  def transformAll(xs: List[Int], f: Int => Int): List[Int] = xs.map(f)
  def main(args: Array[String]): Unit = {
    println(transformAll(List(1, 2, 3), _ + 100))
    println(transformAll(List(1, 2, 3), _ * 10))
  }
}

Contoh penyesuaian yang lebih rapi

Berikut gagasan yang sama dalam bentuk yang lebih rapi: pemanggil menyediakan transformasinya, sehingga fungsi pembantu tetap generik dan dapat digunakan kembali.

object Main {
  def transformAll(xs: List[Int], f: Int => Int): List[Int] = xs.map(f)
  def main(args: Array[String]): Unit = {
    println(transformAll(List(1, 2, 3), x => x + 100))
    println(transformAll(List(1, 2, 3), x => x * x))
  }
}

Pemeriksaan Singkat

Apa yang dimaksud dengan fungsi tingkat tinggi?

Ringkasan

Anda telah mempelajari bahwa fungsi adalah nilai kelas satu:

  • Menyimpan fungsi dalam val, daftar, dan peta
  • Tipe fungsi seperti Int => String
  • Lambda: (x) => body dan bentuk singkat _
  • Fungsi tingkat tinggi menerima atau mengembalikan fungsi
  • Metode menjadi nilai fungsi melalui ekspansi eta
Gratis untuk memulai

Belajar Scala dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
39
Pelajaran
143

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi sebagai Nilai” gratis?

Ya — teks lengkap “Fungsi sebagai Nilai” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi sebagai Nilai”?

Fungsi kelas satu. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?

Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Fungsi sebagai Nilai” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?

Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Fungsi sebagai Nilai
  2. Currying
  3. Komposisi
  4. Closure
← Kembali ke Scala for Backend Engineering & Functional Programming