กลับไปหน้าบทความ

อ่าน 3 นาที

การกำหนดปริมาณแบบมีขอบเขต

ใน ทฤษฎีประเภท (type theory ) การกำหนดปริมาณแบบจำกัด (bounded quantification) (หรือเรียกอีกอย่างว่า polymorphism แบบจำกัด หรือ genericity แบบจำกัด ) หมายถึง ตัวกำหนดปริมาณ แบบสากล...

การกำหนดปริมาณแบบมีขอบเขต

ในทฤษฎีประเภท (type theory ) การกำหนดปริมาณแบบจำกัด (bounded quantification) (หรือเรียกอีกอย่างว่าpolymorphism แบบจำกัดหรือgenericity แบบจำกัด ) หมายถึง ตัวกำหนดปริมาณ แบบสากลหรือ แบบ มีอยู่จริงซึ่งถูกจำกัด ("จำกัด") ให้ครอบคลุมเฉพาะ subtype ของประเภทใดประเภทหนึ่งเท่านั้น การกำหนดปริมาณแบบจำกัดเป็นปฏิสัมพันธ์ระหว่างpolymorphism แบบพารามิเตอร์กับsubtyping การกำหนดปริมาณแบบจำกัดได้รับการศึกษามาอย่างยาวนานในบริบทของ ภาษา เชิงฟังก์ชัน เช่น System F <:แต่ก็มีให้ใช้ในภาษาเชิงวัตถุ สมัยใหม่ ที่รองรับpolymorphism แบบพารามิเตอร์ ( generics )เช่นJava , C#และScala

ภาพรวม

จุดประสงค์ของการกำหนดปริมาณแบบจำกัด (bounded quantification) คือการอนุญาตให้ฟังก์ชันแบบโพลีมอร์ฟิกขึ้นอยู่กับพฤติกรรมเฉพาะบางอย่างของอ็อบเจ็กต์ แทนที่จะเป็นการสืบทอดประเภทโดยสมมติว่าคลาสของอ็อบเจ็กต์ใช้โมเดลแบบเรคอร์ด (record-based model) ซึ่งสมาชิกทุกตัวของคลาสเป็นองค์ประกอบของเรคอร์ด และสมาชิกทั้งหมดของคลาสเป็นฟังก์ชันที่มีชื่อ คุณสมบัติของอ็อบเจ็กต์จะถูกแทนด้วยฟังก์ชันที่ไม่มีอาร์กิวเมนต์และส่งคืนค่าเป็นอ็อบเจ็กต์ พฤติกรรมเฉพาะนั้นจะเป็นชื่อฟังก์ชันพร้อมกับประเภทของอาร์กิวเมนต์และประเภทของค่าที่ส่งคืน การกำหนดปริมาณแบบจำกัดจะพิจารณาอ็อบเจ็กต์ทั้งหมดที่มีฟังก์ชันดังกล่าว ตัวอย่างเช่นminฟังก์ชันแบบโพลีมอร์ฟิกที่พิจารณาอ็อบเจ็กต์ทั้งหมดที่สามารถเปรียบเทียบกันได้

การหาปริมาณแบบจำกัด F

การกำหนดปริมาณแบบจำกัดFหรือการกำหนดปริมาณแบบจำกัดแบบเรียกซ้ำซึ่งนำเสนอในปี 1989 ช่วยให้สามารถกำหนดประเภทของฟังก์ชันที่ใช้กับประเภทแบบเรียกซ้ำได้อย่างแม่นยำยิ่งขึ้น ประเภทแบบเรียกซ้ำคือประเภทที่มีฟังก์ชันเป็นตัวสร้างที่ใช้เป็นประเภทสำหรับอาร์กิวเมนต์บางตัว หรือค่าส่งคืนของอาร์กิวเมนต์ฟังก์ชัน หรืออาร์กิวเมนต์บางตัวของค่าส่งคืนฟังก์ชันของอาร์กิวเมนต์ฟังก์ชัน หรืออื่นๆ กล่าวคือ อยู่ในตำแหน่งบวก [ 1 ]

ตัวอย่าง

ข้อจำกัดประเภทแบบนี้สามารถแสดงได้ในJavaด้วยอินเทอร์เฟซทั่วไป ตัวอย่างต่อไปนี้แสดงวิธีการอธิบายประเภทที่สามารถเปรียบเทียบกันได้ และใช้ข้อมูลนี้เป็นข้อมูลการกำหนดประเภทในฟังก์ชันโพลีมอร์ฟิก ฟังก์ชัน นี้Test::minใช้การกำหนดปริมาณแบบจำกัดอย่างง่าย และไม่ได้ตรวจสอบว่าวัตถุนั้นเปรียบเทียบกันได้หรือไม่ ซึ่งแตกต่างจากTest::fMinฟังก์ชันที่ใช้การกำหนดปริมาณแบบจำกัด F

ในสัญลักษณ์ทางคณิตศาสตร์ ประเภทของฟังก์ชันทั้งสองคือ

ที่ไหน

พิจารณาการประกาศที่เป็นไปได้ต่อไปนี้ในjava.lang:

แพ็คเกจjava.lang ;อิน เทอร์เฟซสาธารณะComparable < T > { int compareTo ( T other ); }public class Integer implements Comparable < Integer > { @Override public int compareTo ( Integer other ) { // ... } }public class String implements Comparable < String > { @Override public int compareTo ( String other ) { // ... } }

จากนั้น มาดูวิธีการใช้งานกัน:

แพ็คเกจorg.wikipedia.examples ;public class Test { public static < S extends Comparable > S min ( S a , S b ) { if ( a . compareTo ( b ) <= 0 ) { return a ; } else { return b ; } }public static < T extends Comparable < T >> T fMin ( T a , T b ) { if ( a . compareTo ( b ) <= 0 ) { return a ; } else { return b ; } }public static void main ( String [] args ) { String a = min ( "cat" , "dog" ); Integer b = min ( 10 , 3 ); Comparable c = min ( "cat" , 3 ); // เกิด ClassCastException ขณะรันไทม์String str = fMin ( "cat" , "dog" ); Integer i = fMin ( 10 , 3 ); // Object o = fMin("cat", 3); // คอมไพล์ไม่ผ่าน} }

ดูเพิ่มเติม

หมายเหตุ

  1. ^ F -bounded polymorphism สำหรับการเขียน โปรแกรมเชิงวัตถุ Canning, Cook , Hill, Olthof และ Mitchell http://dl.acm.org/citation.cfm?id=99392
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Bounded_quantification&oldid=1346157724 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การกำหนดปริมาณแบบมีขอบเขต

ใน ทฤษฎีประเภท (type theory ) การกำหนดปริมาณแบบจำกัด (bounded quantification) (หรือเรียกอีกอย่างว่า polymorphism แบบจำกัด หรือ genericity แบบจำกัด ) หมายถึง ตัวกำหนดปริมาณ แบบสากล...

ภาพรวม

จุดประสงค์ของการกำหนดปริมาณแบบจำกัด (bounded quantification) คือการอนุญาตให้ ฟังก์ชันแบบโพลีมอร์ฟิก ขึ้นอยู่กับพฤติกรรมเฉพาะบางอย่างของอ็อบเจ็กต์ แทนที่จะเป็นการ สืบทอดประเภท โดยสมมติว่าคลาสของอ็อบเจ็กต์ใช้โมเดลแบบเรคอร์ด (record-based model)...

การหาปริมาณแบบจำกัด F

การกำหนดปริมาณแบบจำกัด F หรือ การกำหนดปริมาณแบบจำกัดแบบเรียกซ้ำ ซึ่งนำเสนอในปี 1989 ช่วยให้สามารถกำหนดประเภทของฟังก์ชันที่ใช้กับประเภทแบบเรียกซ้ำได้อย่างแม่นยำยิ่งขึ้น ประเภทแบบเรียกซ้ำคือประเภทที่มีฟังก์ชันเป็นตัวสร้างที่ใช้เป็นประเภทสำหรับอาร์กิวเมนต์บางตัว...

ตัวอย่าง

ข้อจำกัดประเภทแบบนี้สามารถแสดงได้ใน Java ด้วยอินเทอร์เฟซทั่วไป ตัวอย่างต่อไปนี้แสดงวิธีการอธิบายประเภทที่สามารถเปรียบเทียบกันได้ และใช้ข้อมูลนี้เป็นข้อมูลการกำหนดประเภทใน ฟังก์ชันโพลีมอร์ฟิก ฟังก์ชัน นี้ Test::min ใช้การกำหนดปริมาณแบบจำกัดอย่างง่าย...