อยากรู้อยากเห็นมีภาษาที่ช่วยให้คุณสามารถตั้งค่าทางคณิตศาสตร์ในประเภทที่จะสร้างประเภทใหม่ได้หรือไม่ สิ่งที่ต้องการ:
interface A {
void a();
void b();
}
interface B {
void b();
void c();
}
interface C = A & B; // has b()
interface D = A | B; // has a(), b() and c()
interface E = (A & B) ^ B; // has c()
ฉันรู้ว่าในบางภาษาความคิดเหล่านี้สามารถแสดงได้ (เช่น Java มีList<Comparable & Serializable>
ไว้สำหรับส่วนต่อประสานของอินเทอร์เฟซ) แต่ฉันไม่เคยได้ยินภาษาที่รองรับประเภทคณิตศาสตร์ ขอบคุณ!
CanWriteAndCompare extends Serializable, Comparable {}
) และฉันคิดว่าจะพูดคุยเรื่องนี้อย่างไร
A
หรือB
มีสองการใช้งานที่มีลักษณะเหมือนกันทั้งหมด ในวิธีการที่ฉันเรียกวิธี polymorphic ที่สามารถใช้A
หรือ a B
ดังนั้นการใช้งานเหมือนกัน แต่เนื่องจากฉันต้องใช้สองประเภทที่แตกต่างกันฉันต้องการการใช้งานที่สอง myMethod(A | B aOrB)
นี้จะง่ายขึ้นถ้าฉันจะทำ
Or
การดำเนินการสามารถจำลองได้โดยหลายมรดก