..


ลิงก์ผู้สนับสนุน

การใช้งานของ mixins ในทับทิม

บทความที่เขียนโดย Alessio Saltarini
หน้า 1 จาก 2

บางครั้งคุณต้องการที่จะสร้างชั้นของวัตถุที่มี"นี้"คุณสมบัติ แต่ยัง"นี้"และ"อื่น ๆ นี้"ซึ่งเป็นบางทีอาจจะถูกเขียนในที่อื่นในรหัสแหล่งที่มาของเรา

ในคำอื่น ๆ ที่เราต้องการจะสร้างชั้นที่ยืมวิธีการและคุณสมบัติที่กำหนดไว้ในส่วนอื่น ๆ ของรหัสแหล่งที่มาหรือในห้องสมุดบาง

ตรงกันข้ามเราจะรวบรวมรอบคุณสมบัติเช่นเดียวกับรหัสต้นฉบับของเราในสถานที่ที่สามารถเข้าถึงได้ทั้งหมดอย่างใดอย่างหนึ่ง อย่างไร?

purists หวาดกลัวที่จะเขียนโปรแกรมเชิงวัตถุและการสนับสนุน -- ในความคิดของฉันไม่ได้ทั้งหมดโดยไม่มีเหตุผล -- ที่จำเป็นต้องใช้ของประเภทนี้ทุกคนสามารถแก้ไขได้ด้วยการใช้ที่เหมาะสมของ polymorphism

อื่น ๆ โดยเฉพาะอย่างยิ่งหากพวกเขามาจากประสบการณ์กับภาษาเช่น C + +, ยืนยันว่าแม่นยำเนื่องจากความต้องการเหล่านี้ใช้มรดกหลาย

ภาษาในทางปฏิบัติเช่น Ruby, แต่แก้ไขปัญหาโดยการให้เทคนิคที่เรียกว่า"mixin", ชื่อ -- มันเสียง! -- คนไอศครีมให้เธอ Massuchussets ประกอบด้วยไอศครีมรสชาติต่างๆ (ครีมช็อคโกแลต, ... )

mixins ทับทิม

เทคนิค, mixins ทับทิมจะดำเนินการใช้ภายในคลาส, รหัสที่กำหนดไว้ในโมดูลต่างๆ (โมดูล)

เพื่อที่จะใช้เป็นตัวอย่างเล็กน้อยสมมติว่าผมต้องการที่จะดำเนินการประมวลผลคำที่จะพิมพ์ออกมาเป็นมิตรของฉันของจดหมายธุรกิจ ตั้งแต่ที่คุณต้องการจะป้อนเฉพาะข้อมูลที่จำเป็นเช่นผู้รับและข้อความ โปรแกรมจะคิดที่แตกต่างกันง่ายเช่น"เซอร์"และ"ขอแสดงความนับถือ."

ขอเริ่มต้นด้วยการกำหนดในรูปแบบที่เป็นมิตร :






 CordialitaLettera โมดูล



    



 def เริ่มต้น (ที่อยู่)



        



 กลับ"รักนาย."ผู้รับ +​​ +"\ n"



    



 ท้าย



    



 ลายเซ็นสุดท้าย (ตัวอักษร)



        



 กลับตัวอักษร +"\ n"+"ขอแสดงความนับถือ \ nCarlo Smith"



    



 ท้าย







 ท้าย



ไม่มีสิ่งใดในโดยเฉพาะอย่างยิ่งจากนั้นเพียงสองวิธีที่สามารถเปลี่ยนข้อความที่ได้รับเป็นค่านำเข้า

Let's เขียนระดับ"ผสม"กับวิธีการเหล่านี้เพียง mixin :






 ระดับตัวอักษร



    



 รวมถึงการ CordialitaLettera



    



 สุดท้าย stampaLettera (ผู้รับ, ข้อความ)



        



 จุดเริ่มต้น = (รับ)



        



 = ตัวอักษร + การโพสต์



        



 ทำให้ลายเซ็น (ตัวอักษร)



    



 ท้าย







 ท้าย



ตัวอักษรดังกล่าวข้างต้นในชั้นเรียนมีวิธีการที่จะใช้เป็นอินพุทเท่านั้นส่วนตัวแปรของตัวอักษรด้วยรูปแบบที่เป็นมิตรที่กำหนดไว้ในโมดูล

ที่คุณสามารถดูไวยากรณ์ค่อนข้างคล้ายกับการรับมรดกใน Ruby, แต่แตกต่างจากหลังในชั้นเรียนสามารถใช้หมายเลขใด ๆ ของรูปแบบ -- และเป็นที่รู้จักกันเป็นชั้นเรียนสามารถจะได้มาจาก และมีเพียงชั้นผู้ปกครองหนึ่ง (ทับทิมไม่สนับสนุนการสืบทอดหลาย!)

ตัวอย่างเช่นเราสามารถเขียน :






 def หลัก ()



    



 Lettere.new Lengin =



    



 lEngine.stampaLettera ('Alessio Saltarini',



                          



 'ฉันเพียงแค่การถ่ายโอนดำเนินการต่อไป



                           



 ที่คุณต้องการ.')



    



 ทำให้



    



 lEngine.stampaLettera ('แมทธิว Pisconi',



                          



 'ฉันส่งโทรสารไปยัง nr.038283873.')







 ท้าย



ซึ่งผลตอบแทน :





 Saltarini รัก sig.Alessio,







 ฉันได้ทำเพียงแค่การถ่ายโอนที่คุณร้องขอ







 ขอแสดงความนับถือ







 Rossi ติคาร์โล








 Pisconi รัก sig.Matteo,







 ผมส่งโทรสารไปยัง nr.038283873







 ขอแสดงความนับถือ







 Rossi ติคาร์โล



เทคนิคนี้ในหมู่สิ่งอื่น ๆ ที่ช่วยให้เราสามารถดูดซึมการใช้งานของ mixins ที่ของการเชื่อมต่อใน Java : ในความเป็นจริงถ้าชั้นเป็น"ผสม"กับรูปแบบในความเป็นจริงก็จะใช้วิธีการ (และดังนั้นจึงมีคุณสมบัติตรงตามอินเตอร์เฟซบางอย่าง) .

ในประเภทเดียวกัน ...
E - Learning
Ruby และ Ruby on Rails (หลักสูตร) Ruby และ Ruby on Rails (หลักสูตร)
สร้างโปรแกรมซอฟต์แวร์และเว็บด้วยทับทิมและ ร. จาก 39 €
ลิงก์ผู้สนับสนุน