คำถามติดแท็ก trait

2
ทำไมคอมไพเลอร์ Scala ไม่สามารถให้คำเตือนการจับคู่รูปแบบสำหรับคลาส / คุณลักษณะที่ไม่ได้ปิดผนึกได้
ถ้าฉันใช้un unผนึกtraitหรือabstract classใน Scala จากนั้นใช้การจับคู่รูปแบบฉันสงสัยว่าคอมไพเลอร์ไม่ทราบเวลาที่คอมไพล์สำหรับ patternmatch นี้โดยเฉพาะการใช้งานที่เป็นไปได้ของคุณลักษณะ / คลาสนี้มีอยู่หรือไม่ ดังนั้นถ้าเป็นเช่นนั้นมันจะไม่เตือนรูปแบบการจับคู่แม้ว่าtrait/ abstract classไม่ได้ถูกปิดผนึกเพราะเขารู้ว่าสามารถใช้ประเภทใดได้โดยตรวจสอบการอ้างอิง / การนำเข้าที่เป็นไปได้ทั้งหมดหรือไม่ เช่นถ้าฉันมีOption[A]และฉันจับคู่รูปแบบเฉพาะสำหรับSome[A]แต่ไม่ได้สำหรับNoneคอมไพเลอร์จะบ่นเพราะOptionถูกปิดผนึก หากคอมไพเลอร์ไม่สามารถรู้ / แก้ปัญหานั้นทำไมเขาถึงทำไม่ได้? และถ้าคอมไพเลอร์ (ตามหลักวิชา) สามารถทำเช่นนั้นได้เหตุผลอะไรที่มันไม่ได้ใช้ใน Scala? มีภาษาอื่นที่สนับสนุนพฤติกรรมแบบนั้นหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.