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

อ่าน 4 นาที

มูส (เพิร์ล)

Mooseเป็นส่วนขยายของ ระบบ วัตถุของภาษาการเขียนโปรแกรมPerl วัตถุประสงค์ที่ระบุไว้คือการนำ คุณสมบัติภาษา การเขียนโปรแกรมเชิงวัตถุ สมัยใหม่ มาสู่ Perl 5 และทำให้การเขียนโปรแกรม Perl

มูส (เพิร์ล)

Mooseเป็นส่วนขยายของ ระบบ วัตถุของภาษาการเขียนโปรแกรมPerl วัตถุประสงค์ที่ระบุไว้[ 1 ]คือการนำ คุณสมบัติภาษา การเขียนโปรแกรมเชิงวัตถุ สมัยใหม่ มาสู่ Perl 5 และทำให้การเขียนโปรแกรม Perl เชิงวัตถุมีความสอดคล้องกันมากขึ้นและไม่น่าเบื่อ

คุณสมบัติ

Moose สร้างขึ้นบนClass::MOPMetaObject Protocol (MOP) โดยใช้ MOP ทำให้ Moose สามารถตรวจสอบประเภท ได้อย่างสมบูรณ์ สำหรับคลาสทั้งหมดที่ใช้ Moose

ชั้นเรียน

Moose อนุญาตให้นักโปรแกรมเมอร์สร้างคลาส ได้ :

  • คลาสจะมีแอตทริบิวต์ ตั้งแต่ศูนย์ถึงมากกว่าหนึ่ง รายการ
  • คลาสจะมีเมธอดตั้งแต่ศูนย์เมธอดขึ้นไป
  • คลาสหนึ่งๆ สามารถมีคลาสแม่ (หรือคลาสหลัก) ได้ตั้งแต่ศูนย์คลาสขึ้นไปคลาสจะสืบทอดคุณสมบัติจากคลาสแม่ของมัน Moose รองรับการสืบทอดแบบหลายทาง
  • คลาสหนึ่งๆ อาจมีตัวแก้ไขเมธอดได้ตั้งแต่ศูนย์ตัวขึ้นไป ตัวแก้ไขเหล่านี้สามารถใช้กับเมธอดของคลาสเอง เมธอดที่สืบทอดมาจากคลาสบรรพบุรุษ หรือเมธอดที่กำหนดโดยบทบาทต่างๆ ได้
  • คลาสทำหน้าที่ตั้งแต่ศูนย์บทบาทขึ้นไป (ซึ่งในภาษาโปรแกรมอื่นๆ เรียกว่าtrait )
  • คลาสจะมีคอนสตรัคเตอร์และดีสตรัคเตอร์
  • คลาสหนึ่งจะมีเมตาคลาส

คุณลักษณะ

แอตทริบิวต์คือคุณสมบัติของคลาสที่กำหนดแอตทริบิวต์นั้น

บทบาท

บทบาทใน Moose นั้นอิงตามคุณลักษณะโดยทำหน้าที่คล้ายกับมิกซ์อินแต่ประกอบขึ้นในแนวนอนแทนที่จะเป็นการสืบทอด นอกจากนี้ยังคล้ายกับอินเทอร์เฟซ อยู่บ้าง แต่ต่างจากบางการใช้งานของอินเทอร์เฟซตรงที่สามารถให้การใช้งานเริ่มต้นได้ บทบาทสามารถนำไปใช้กับอินสแตนซ์แต่ละตัวรวมถึงคลาสได้ด้วย

  • บทบาทหนึ่งๆ จะมีคุณลักษณะตั้งแต่ศูนย์ถึงมากกว่าหนึ่งอย่าง
  • บทบาทหนึ่งอาจมีเมธอดตั้งแต่ศูนย์ถึงมากกว่าหนึ่งเมธอด
  • บทบาทหนึ่งมีตัวปรับแต่งวิธีการตั้งแต่ศูนย์ตัวขึ้นไป
  • บทบาทหนึ่งๆ จะมีวิธีการที่จำเป็นอย่างน้อยศูนย์วิธีขึ้นไป

ส่วนขยาย

มีโมดูลเสริม Moose จำนวนมากบนCPAN เดือนกันยายน2555 มีโมดูล 855 โมดูลใน 266 การแจกจ่ายในเนมสเปซ MooseX [ 2 ]ส่วนใหญ่สามารถติดตั้งได้โดยเลือกด้วยโมดูล Task::Moose [ 3 ]

ตัวอย่าง

นี่คือตัวอย่างของคลาสPointและคลาสย่อยPoint3D :

แพ็คเกจพอยต์ ; ใช้มูส ; ใช้คาร์ป ; มี'x' => ( isa => 'Num' , is => 'rw' ); มี'y' => ( isa => 'Num' , is => 'rw' ); sub clear { my $self = shift ; $self- > x ( 0 ); $self- > y ( 0 ); } sub set_to { @_ == 3 หรือcroak "จำนวนอาร์กิวเมนต์ไม่ถูกต้อง" ; my $self = shift ; my ( $x , $y ) = @_ ; $self- > x ( $x ); $self- > y ( $y ); } แพ็คเกจPoint3D ; ใช้Moose ; ใช้Carp ; ขยาย'Point' ; มี'z' => ( isa => 'Num' , is => 'rw' ); หลังจาก'clear' => sub { my $self = shift ; $self- > z ( 0 ); }; sub set_to { @_ == 4 หรือcroak "จำนวนอาร์กิวเมนต์ไม่ถูกต้อง" ; my $self = shift ; my ( $x , $y , $z ) = @_ ; $self- > x ( $x ); $self- > y ( $y ); $self- > z ( $z ); } 

มีset_to()เมธอดใหม่ใน คลาส Point3Dดังนั้นเมธอดที่มีชื่อเดียวกันซึ่งกำหนดไว้ใน คลาส Pointจะไม่ถูกเรียกใช้ในกรณีของอินสแตนซ์Point3Dในทางกลับกัน เมธอดนั้นไม่ได้ถูกแทนที่ แต่ถูกขยายเพิ่มเติมในคลาสย่อย ดังนั้นทั้งสองเมธอดจึงทำงานตามลำดับที่ถูกต้องclear()

วิธีการนี้ใช้ส่วนขยายเช่นเดียวกันMooseX::Declare:

ใช้MooseX::Declare ; คลาสPoint { มี'x' => ( isa => 'Num' , is => 'rw' ); มี'y' => ( isa => 'Num' , is => 'rw' ); เมธอดclear { $self- > x ( 0 ); $self- > y ( 0 ); } method set_to ( Num $x , Num $y ) { $self- > x ( $x ); $self- > y ( $y ); } } class Point3D extends Point { has 'z' => ( isa => 'Num' , is => 'rw' ); หลังจากล้าง { $self- > z ( 0 ); } method set_to ( Num $x , Num $y , Num $z ) { $self- > x ( $x ); $self- > y ( $y ); $self- > z ( $z ); } } 

ดูเพิ่มเติม

  • หน้าแรกของ Moose
  • เอกสารเกี่ยวกับกวางมูส
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Moose_(Perl)&oldid=1347044093 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ มูส (เพิร์ล)

Mooseเป็นส่วนขยายของ ระบบ วัตถุของภาษาการเขียนโปรแกรมPerl วัตถุประสงค์ที่ระบุไว้คือการนำ คุณสมบัติภาษา การเขียนโปรแกรมเชิงวัตถุ สมัยใหม่ มาสู่ Perl 5 และทำให้การเขียนโปรแกรม Perl

คุณสมบัติ

Moose สร้างขึ้นบน Class::MOP MetaObject Protocol (MOP) โดยใช้ MOP ทำให้ Moose สามารถ ตรวจสอบประเภท ได้อย่างสมบูรณ์ สำหรับคลาสทั้งหมดที่ใช้ Moose

ชั้นเรียน

Moose อนุญาตให้นักโปรแกรมเมอร์สร้าง คลาส ได้ :

คุณลักษณะ

แอตทริบิวต์คือคุณสมบัติของคลาสที่กำหนดแอตทริบิวต์นั้น