ต่อไปนี้เป็นสาเหตุบางประการที่อาจทำให้คุณสนใจมากหรือน้อยขึ้นอยู่กับความชอบของคุณ:
อย่าลดราคาเพียงเพราะเป็นน้ำตาลซินแทติกติก ในขณะที่คุณอาจพูดว่ามีอะไรบางอย่างเป็นเพียงน้ำตาล syntactic มันเป็นน้ำตาลที่ทำให้ชีวิตของคุณหวาน - ในฐานะโปรแกรมเมอร์เช่นเดียวกับกาแฟหรือดื่มชา
Singletons - Scala ทุกอันobject
มีอยู่ในตัวเดียว เมื่อพิจารณาว่าในโลก Java ผู้คนกำลังใช้งานซิงเกิลตันในหลากหลายรูปแบบและบ่อยครั้งที่ไม่ได้ทำผิดพลาดในการติดตั้งพวกเขาคุณไม่สามารถทำผิดพลาดง่าย ๆ แบบ Scala ได้ การเขียนobject
แทนที่จะclass
ทำให้เป็นซิงเกิลและเสร็จแล้ว
การเข้าถึงวิธีการคงที่: วิธีการคงที่ใน Java สามารถเข้าถึงได้จากวัตถุ ตัวอย่างเช่นสมมติว่าคุณได้เรียนC
ด้วยวิธีการแบบคงที่f
และวัตถุประเภทc
C
จากนั้นคุณควรโทรC.f
แต่ Java อนุญาตให้คุณ (แม้ว่าจะมีคำเตือน) ให้ใช้c.f
ซึ่งเมื่อคุณมาจากพื้นหลังของสกาล่าก็ไม่สมเหตุสมผลเลยเพราะวัตถุไม่มีวิธีf
จริงๆ
การแยกชัดเจน: ใน Java คุณสามารถผสมคุณลักษณะและวิธีการคงที่และไม่คงที่ในชั้นเรียน หากคุณทำงานอย่างมีวินัยสิ่งนี้จะไม่เป็นปัญหา แต่ถ้าคุณ (หรือคนอื่นสำหรับเรื่องนั้น) ทำไม่ได้คุณจะจบลงด้วยส่วนที่คงที่และไม่คงที่และคุณสามารถบอกได้อย่างรวดเร็ว มีอะไรคงที่และสิ่งที่ไม่ ใน Scala ทุกสิ่งที่อยู่ภายในวัตถุที่แสดงร่วมนั้นไม่ได้เป็นส่วนหนึ่งของออบเจกต์รันไทม์ของคลาสที่เกี่ยวข้อง แต่สามารถใช้ได้จากบริบทแบบสแตติก ในทางกลับกันถ้ามันถูกเขียนในชั้นเรียนจะมีให้กับอินสแตนซ์ของชั้นเรียนนั้น แต่ไม่ได้มาจากบริบทคงที่ สิ่งนี้จะกลายเป็นภาระโดยเฉพาะอย่างยิ่งใน Java เมื่อคุณเริ่มเพิ่มบล็อกเริ่มต้นคงที่และไม่คงที่ในชั้นเรียนของคุณ นี่อาจเป็นเรื่องยากที่จะเข้าใจในเรื่องของคำสั่งการเรียกใช้แบบไดนามิก
โค้ดที่น้อยลง: คุณไม่จำเป็นต้องเพิ่มคำว่าstaticให้กับแต่ละแอททริบิวต์หรือเมธอดทุกรายการในobject
ดังนั้นจึงทำให้โค้ดมีความรัดกุมยิ่งขึ้น
ข้อเสียหายากกว่ามาก หนึ่งอาจโต้แย้งว่าชิ้นส่วนคงที่และไม่คงที่ควรอยู่ด้วยกัน แต่จะแยกออกจากแนวคิด Scala ของวัตถุสหาย ตัวอย่างเช่นมันอาจดูแปลกที่มีคลาสไดอะแกรม แต่ท้ายที่สุดต้องสร้างสองสิ่งในรหัสและแยกแยะคุณลักษณะที่ไปที่ใด