เกิดอะไรขึ้นกับฉันขณะเขียนโปรแกรมใน Java:
String str
// want to call something(), but signature does not match
something(Foo foo)
// but I have this conversion function
Foo fooFrom(String)
// Obviously I am about to create another method overload.. sigh
something(String s) {
something(fooFrom(s));
}
แต่แล้วฉันก็นึกถึงความเป็นไปได้ของ "การแปลงประเภทอัตโนมัติ" ซึ่งเพิ่งใช้ฟังก์ชันการแปลงที่กำหนดไว้ของฉัน fooFrom
ทุกครั้งที่ส่งสตริงโดยที่ยกเว้นวัตถุ Foo
การค้นหาของฉันนำฉันไปยังหน้าวิกิพีเดียเกี่ยวกับการแปลงประเภทพร้อมตัวอย่างไอเฟลนี้:
class STRING_8
…
create
make_from_cil
…
convert
make_from_cil ({SYSTEM_STRING})
to_cil: {SYSTEM_STRING}
…
วิธีการหลัง convert
จะถูกเรียกโดยอัตโนมัติหากใช้ STRING_8 เป็น SYSTEM_STRING และในทางกลับกัน น่าแปลกใจสำหรับฉันฉันไม่สามารถหาภาษาอื่นที่สนับสนุนสิ่งนี้ได้
ดังนั้นคำถามของฉัน: มีภาษาอื่น ๆ ที่รองรับฟีเจอร์นี้หรือไม่? ถ้าไม่ มีเหตุผลใดบ้างในเรื่องนี้เนื่องจากดูเหมือนว่ามีประโยชน์มากสำหรับฉัน นอกจากนี้ ฉันคิดว่าการนำมันเป็นส่วนเสริมภาษาคงไม่ใช่เรื่องยาก