ภาษาหลักของฉันถูกพิมพ์แบบคงที่ (Java) ใน Java คุณต้องคืนค่าประเภทเดียวจากทุกวิธี ตัวอย่างเช่นคุณไม่สามารถมีวิธีการที่มีเงื่อนไขส่งกลับหรือเงื่อนไขส่งกลับString
Integer
ตัวอย่างเช่นใน JavaScript สิ่งนี้เป็นไปได้มาก
ในภาษาที่พิมพ์แบบสแตติกฉันเข้าใจว่าทำไมนี่เป็นความคิดที่ไม่ดี ถ้าทุกวิธีส่งกลับObject
(ผู้ปกครองทั่วไปทุกคลาสสืบทอดจาก) ดังนั้นคุณและคอมไพเลอร์ก็ไม่รู้ว่าคุณกำลังทำอะไรอยู่ คุณจะต้องค้นพบข้อผิดพลาดทั้งหมดของคุณในเวลาทำงาน
แต่ในภาษาที่พิมพ์แบบไดนามิกอาจไม่มีแม้แต่คอมไพเลอร์ ในภาษาที่พิมพ์แบบไดนามิกฉันไม่ชัดเจนว่าทำไมฟังก์ชั่นที่ส่งกลับหลายประเภทเป็นความคิดที่ไม่ดี พื้นหลังของฉันในภาษาแบบคงที่ทำให้ฉันหลีกเลี่ยงการเขียนฟังก์ชั่นดังกล่าว แต่ฉันกลัวว่าฉันมีความสนใจในคุณลักษณะที่ทำให้โค้ดของฉันสะอาดขึ้นในแบบที่ฉันมองไม่เห็น
แก้ไข : ฉันจะลบตัวอย่างของฉัน (จนกว่าฉันจะนึกได้ดีกว่า) ฉันคิดว่ามันเป็นแรงผลักดันให้ผู้คนตอบกลับไปยังจุดที่ฉันไม่พยายามทำ
(coerce var 'string)
อัตราผลตอบแทนstring
หรือ(concatenate 'string this that the-other-thing)
เช่นเดียวกัน ฉันเขียนสิ่งต่าง ๆ เช่นThingLoader.getThingById (Class<extends FindableThing> klass, long id)
กัน และที่นั่นฉันอาจส่งคืนบางสิ่งบางอย่างที่ subclasses ที่คุณขอ: loader.getThingById (SubclassA.class, 14)
อาจส่งคืนสิ่งSubclassB
ที่ขยายออกไปSubclassA
...