Scala for Backend Engineering & Functional Programming · บทเรียน

การย่อหน้าที่มีความหมาย

วงเล็บปีกกาเป็นตัวเลือก

บทเรียน 1 จาก 413 ขั้นตอน

การย่อหน้าที่มีความหมาย เป็นบทเรียน Scala for Backend Engineering & Functional Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Scala for Backend Engineering & Functional Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน

วงเล็บปีกกาแบบเลือกใช้ได้

Scala 3 เพิ่ม การเยื้องที่มีความหมาย หรือที่เรียกว่าไวยากรณ์ วงเล็บปีกกาแบบเลือกใช้ได้ แทนที่จะครอบบล็อกด้วย { } คุณสามารถใช้การเยื้องเพื่อกำหนดขอบเขตของบล็อกได้

  • วงเล็บปีกกายังคงใช้ได้และถูกต้องสมบูรณ์
  • โค้ดที่ใช้การเยื้องอ่านสะอาดตาและคล้าย Python
object Main:
  def main(args: Array[String]): Unit =
    println("No braces needed")

เนื้อหาเมธอดแบบเยื้อง

เนื้อหาเมธอดที่ตามหลัง = สามารถเป็นบล็อกที่เยื้องได้ ทุกคำสั่งที่อยู่ในระดับการเยื้องเดียวกันจะเป็นส่วนหนึ่งของเนื้อหานั้น

นิพจน์สุดท้าย คือค่าที่ส่งกลับ

object Main:
  def square(x: Int): Int =
    val result = x * x
    result

  def main(args: Array[String]): Unit =
    println(square(5))

นิพจน์ if แบบเยื้อง

โครงสร้างควบคุมใช้ไวยากรณ์แบบใหม่ที่กระชับ หลัง if cond then ให้เยื้องสาขา และจัด else ให้อยู่ระดับเดียวกับ if

  • รูปแบบที่ไม่มีวงเล็บปีกกาจำเป็นต้องมี then
  • ไม่จำเป็นต้องใส่วงเล็บรอบเงื่อนไข
object Main:
  def main(args: Array[String]): Unit =
    val n = 7
    val label =
      if n % 2 == 0 then "even"
      else "odd"
    println(label)

ลูป for แบบเยื้อง

ลูป for ใช้ do สำหรับผลข้างเคียง หรือใช้ yield เพื่อสร้างคอลเลกชัน โดยทั้งสองแบบใช้การเยื้อง

object Main:
  def main(args: Array[String]): Unit =
    for i <- 1 to 3 do
      println(s"line $i")

    val doubled =
      for i <- 1 to 3 yield i * 2
    println(doubled)

ลูป while แบบเยื้อง

ลูป while ใช้ do ตามด้วยบล็อกที่เยื้อง ในรูปแบบวงเล็บปีกกาแบบเลือกใช้ได้

object Main:
  def main(args: Array[String]): Unit =
    var i = 0
    while i < 3 do
      println(s"i = $i")
      i += 1

นิพจน์ match แบบเยื้อง

การจับคู่รูปแบบเหมาะกับการใช้การเยื้องโดยธรรมชาติ ส่วนคำสั่ง case จะเยื้องอยู่ใต้ match

object Main:
  def describe(n: Int): String =
    n match
      case 0 => "zero"
      case 1 => "one"
      case _ => "many"

  def main(args: Array[String]): Unit =
    println(describe(1))
    println(describe(9))

เนื้อหาของคลาสและ trait

คลาส trait และออบเจกต์สามารถละวงเล็บปีกกาได้เช่นกัน เครื่องหมายโคลอน : หลังส่วนหัวจะเปิดเนื้อหาที่เยื้อง

class Point(x: Int, y: Int):
  def show: String = s"($x, $y)"

object Main:
  def main(args: Array[String]): Unit =
    println(Point(2, 3).show)

เครื่องหมาย end

สำหรับบล็อกที่เยื้องยาว คุณสามารถเพิ่ม เครื่องหมาย end เพื่อระบุให้ชัดเจนว่าคำจำกัดความสิ้นสุดที่ใด ช่วยให้อ่านเมธอดหรือคลาสขนาดใหญ่ได้ง่ายขึ้น

  • รูปแบบ: end <name> หรือ end if, end while เป็นต้น
  • เป็นตัวเลือกและคอมไพเลอร์จะตรวจสอบให้
object Main:
  def greet(name: String): String =
    val msg = s"Hello, $name"
    msg
  end greet

  def main(args: Array[String]): Unit =
    println(greet("Ada"))
  end main
end Main

การผสมวงเล็บปีกกากับการเยื้อง

คุณสามารถ ผสมทั้งสองรูปแบบได้อย่างอิสระ บางทีมเลือกใช้วงเล็บปีกกาเพื่อความชัดเจนในกรณีที่มีการซ้อนหลายชั้น กฎการเยื้องจะบังคับใช้เฉพาะบริเวณที่ไม่มีวงเล็บปีกกา

object Main:
  def main(args: Array[String]): Unit = {
    val xs = List(1, 2, 3)
    val total =
      xs.foldLeft(0)((acc, x) => acc + x)
    println(total)
  }

ข้อผิดพลาดทั่วไปจากการเยื้อง

การเยื้องมีความหมาย ดังนั้นควรใช้อย่างสม่ำเสมอ

  • ใช้ช่องว่าง อย่าผสมแท็บกับช่องว่าง
  • บรรทัดที่เยื้องไม่ตรงอาจหลุดออกจากบล็อกโดยไม่สังเกตเห็น
  • เนื้อหาของแม่แบบ (คลาส/ออบเจกต์) ต้องใช้เครื่องหมายโคลอน : แต่เนื้อหาเมธอดที่ตามหลัง = ไม่ต้องใช้
object Main:
  def main(args: Array[String]): Unit =
    val items = List("a", "b")
    items.foreach: item =>
      println(item.toUpperCase)

ไวยากรณ์อาร์กิวเมนต์ที่ใช้วงเล็บปีกกาน้อยลง

Scala 3 ยังอนุญาตให้ส่งอาร์กิวเมนต์แบบบล็อกหลังเครื่องหมายโคลอนได้ items.foreach: x => จะเปิดเนื้อหาลัมบ์ดาที่เยื้อง ทำให้ไม่ต้องซ้อนวงเล็บและวงเล็บปีกกา

object Main:
  def main(args: Array[String]): Unit =
    val nums = List(1, 2, 3, 4)
    val evens = nums.filter: n =>
      n % 2 == 0
    println(evens)

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเรื่องการเยื้องที่มีความหมาย

สรุป

คุณได้เรียนรู้การเยื้องที่มีความหมายใน Scala 3

  • บล็อกสามารถใช้การเยื้องแทน { } ได้
  • โครงสร้างควบคุมใช้ then, do และ yield
  • เนื้อหาของคลาส/ออบเจกต์/trait เปิดด้วยเครื่องหมายโคลอน :
  • เครื่องหมาย end ช่วยระบุขอบเขตของบล็อกยาว
  • สามารถผสมทั้งสองรูปแบบได้ แต่ควรเว้นวรรคอย่างสม่ำเสมอ
object Main:
  def main(args: Array[String]): Unit =
    for i <- 1 to 2 do
      if i == 1 then println("first")
      else println("second")
  end main
end Main
เริ่มต้นได้ฟรี

เรียนรู้ Scala ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
39
บทเรียน
143

คำถามที่พบบ่อย

บทเรียน “การย่อหน้าที่มีความหมาย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การย่อหน้าที่มีความหมาย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Scala for Backend Engineering & Functional Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การย่อหน้าที่มีความหมาย”

วงเล็บปีกกาเป็นตัวเลือก คุณปฏิบัติ Scala for Backend Engineering & Functional Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Scala for Backend Engineering & Functional Programming หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Scala for Backend Engineering & Functional Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การย่อหน้าที่มีความหมาย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Scala for Backend Engineering & Functional Programming นี้ได้ไหม

ได้ บทเรียน Scala for Backend Engineering & Functional Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การย่อหน้าที่มีความหมาย
  2. อีนัมใน Scala 3
  3. ชนิดข้อมูลทึบแสง
  4. ชนิดข้อมูลยูเนียนและอินเตอร์เซกชัน
← กลับไปที่ Scala for Backend Engineering & Functional Programming