ไวยากรณ์:
ไวยากรณ์ของฟังก์ชัน 'อวยพร' มีดังต่อไปนี้ ฟังก์ชันนี้สามารถใช้ได้กับหนึ่งอาร์กิวเมนต์หรือสองอาร์กิวเมนต์ โดยปกติแล้ว ฟังก์ชันนี้จะใช้กับสองอาร์กิวเมนต์ โดยอาร์กิวเมนต์แรกเป็นตัวแปรอ้างอิง และอาร์กิวเมนต์ที่สองคือชื่อคลาสที่ถูกอ้างอิงโดยอาร์กิวเมนต์แรก เมื่อใช้กับค่าอาร์กิวเมนต์เดียว ตัวแปรอ้างอิงจะอ้างอิงถึงแพ็คเกจปัจจุบัน
อวยพรผู้อ้างอิง
หรือ
อวยพรผู้อ้างอิง , ชื่อคลาส
ตัวอย่างฟังก์ชัน Bless() แบบต่างๆ
การใช้ฟังก์ชัน bless() ในหลายๆ วิธีจะแสดงไว้ในส่วนนี้ของบทช่วยสอน
ตัวอย่างที่ 1: การใช้คลาสธรรมดาและวัตถุ
ในตัวอย่างนี้ แพ็คเกจชื่อ 'Book' มีรูทีนย่อยที่ทำงานเหมือนกับเมธอด Constructor ของคลาส ในที่นี้ ฟังก์ชัน 'bless' ใช้เพื่อเชื่อมโยงตัวแปรกับชื่อคลาสที่ให้ไว้ในขณะที่เรียกใช้เมธอด Init()
#!/usr/bin/perl
ใช้อย่างเข้มงวด ;
ใช้ คำเตือน ;
ใช้ 5.34.0 ;
#กำหนดแพ็คเกจ
หนังสือแพ็คเกจ ;
#กำหนดคอนสตรัคเตอร์
ภายใต้การเริ่มต้น
{
#เริ่มต้นชื่อคลาส
$className ของฉัน = กะ ;
#เริ่มต้นตัวแปร
ตัวแปร $ ของฉัน = {
'ชื่อหนังสือ' => กะ ,
'ชื่อผู้แต่ง' => กะ ,
'ปีที่เผยแพร่' => กะ ,
'ราคา' => กะ
} ;
#ตั้งค่าการอ้างอิงด้วยการอ้างอิง
อวยพรตัวแปร $ , $คลาสชื่อ ;
#ส่งคืนตัวแปรอ้างอิง
กลับ $ตัวแปร ;
}
#สร้างวัตถุมงคล
$bookObj.ของฉัน = หนังสือเริ่มต้น ( “เรียนภาษาเพิร์ล” , 'แรนดัล แอล. ชวาตซ์' , 1993 , สี่ห้า ) ;
#พิมพ์ค่าของตัวแปรคลาส
พูด 'รายละเอียดหนังสือ:' ;
พูด ' \n ชื่อหนังสือ: $bookObj->{'BookName'}' ;
พูด 'ชื่อผู้แต่ง: $bookObj->{'AuthorName'}' ;
พูด 'ปีที่พิมพ์: $bookObj->{'PublishedYear'}' ;
พูด 'ราคา: \$ $bookObj->{'ราคา'}' ;
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์:
ตัวอย่างที่ 2: การใช้คลาสและวัตถุที่มีหลายวิธี
ในตัวอย่างนี้ แพ็คเกจชื่อ 'ผลิตภัณฑ์' มีสองวิธี วิธีหนึ่งคือ Init() ซึ่งใช้ในการเริ่มต้นตัวแปรที่จำเป็นและอ้างอิงถึงตัวแปรด้วยชื่อคลาสโดยใช้ฟังก์ชัน 'bless' อีกวิธีหนึ่งคือการคำนวณราคา () ใช้ในการคำนวณราคาส่วนลดของผลิตภัณฑ์
#!/usr/bin/perlใช้อย่างเข้มงวด ;
ใช้ คำเตือน ;
ใช้ 5.34.0 ;
#กำหนดแพ็คเกจ
สินค้าแพ็คเก็จ ;
ตัวแปร $ ของฉัน = { } ;
#กำหนดคอนสตรัคเตอร์
ภายใต้การเริ่มต้น
{
#เริ่มต้นชื่อคลาส
$className ของฉัน = กะ ;
#เริ่มต้นตัวแปร
$ตัวแปร = {
'รหัส' => กะ ,
'ชื่อ' => กะ ,
'ราคา' => กะ
} ;
#ตั้งค่าการอ้างอิงด้วยการอ้างอิง
อวยพรตัวแปร $ , $คลาสชื่อ ;
#ส่งคืนตัวแปรอ้างอิง
กลับ $ตัวแปร ;
}
#ประกาศวิธีการคำนวณราคาส่วนลด
ย่อยการคำนวณ_ราคา
{
$discount_price ของฉัน = $ตัวแปร- > { 'ราคา' } - $ตัวแปร- > { 'ราคา' } * 0.1 ;
พูด 'ลดราคา: \$ $ส่วนลด_ราคา' ;
}
#สร้างวัตถุมงคล
$proObj. ของฉัน = เริ่มต้นผลิตภัณฑ์ ( '6745' , 'มอนิเตอร์เดลล์' , ห้าสิบ ) ;
#พิมพ์ค่าของตัวแปรคลาส
พูด “ข้อมูลสินค้าหลัง 10.00 น \% การลดราคา: ' ;
พูด ' \n รหัส: $proObj->{'Id'}' ;
พูด 'ชื่อ: $proObj->{'ชื่อ'}' ;
พูด 'ราคาเดิม: \$ $proObj->{'ราคา'}' ;
#เรียกเมธอดอ็อบเจ็กต์
$โปรObj- > คำนวณ_ราคา ( ) ;
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์:
ตัวอย่างที่ 3: การใช้คลาสโดยการสร้างโมดูล
ในตัวอย่างนี้ โมดูล Perl ที่ผู้ใช้กำหนดจะถูกสร้างขึ้นในไฟล์แยกต่างหากชื่อ 'CalPower.pm' โดยที่ฟังก์ชัน 'bless' ถูกใช้ สร้างไฟล์นี้ด้วยสคริปต์ Perl ต่อไปนี้ โมดูลนี้จะคำนวณค่า “x” n “ โดยที่ค่าของ “x” และ “n” มาจากสคริปต์ Perl ที่นำเข้าโมดูลนี้
#!/usr/bin/perlใช้อย่างเข้มงวด ;
ใช้ คำเตือน ;
ใช้ 5.34.0 ;
#กำหนดชื่อแพ็คเกจ
แพ็คเกจ CalPower ;
#กำหนดคอนสตรัคเตอร์
ภายใต้การเริ่มต้น
{
$className ของฉัน = กะ ;
$var ของฉัน =
{
ตัวเลข => กะ ,
พลัง => กะ
} ;
อวยพร $var , $คลาสชื่อ ;
กลับ $var ;
}
#กำหนดวิธีการคำนวณค่ากำลัง
คำนวณย่อย
{
$var ของฉัน = กะ ;
ผลลัพธ์ $ ของฉัน = $var- > { 'ตัวเลข' } ;
สำหรับ ( $i ของฉัน = 1 ; $ฉัน < $var- > { 'พลัง' } ; $i++ )
{
$ผลลัพธ์ = $var- > { 'ตัวเลข' } * $ผลลัพธ์ ;
}
กลับ $ผลลัพธ์ ;
}
สร้างไฟล์ Perl ด้วยสคริปต์ต่อไปนี้ซึ่งนำเข้าโมดูล 'CalPower' เพื่อคำนวณพลังงานตามค่าอินพุตที่นำมาจากผู้ใช้
#!/usr/bin/perlใช้อย่างเข้มงวด ;
ใช้ คำเตือน ;
ใช้ 5.34.0 ;
ใช้แคลพาวเวอร์ ;
#เอาค่าฐานมา
พิมพ์ 'ป้อนค่าของ x:' ;
กัด ( $x ของฉัน = <> ) ;
#เอาหุบเขาพลัง
พิมพ์ 'ป้อนค่าของ n:' ;
กัด ( $n ของฉัน = <> ) ;
#สร้างวัตถุมงคล
$Obj.ของฉัน = เริ่มต้น CalPower ( $x , $n ) ;
#พิมพ์ค่ากำลังที่คำนวณได้
พิมพ์ '$x ยกกำลัง $n คือ' ;
พูด $Obj- > คำนวณ ( ) ;
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์:
บทสรุป
การใช้ฟังก์ชัน “bless” ใน Perl จะแสดงอยู่ในบทช่วยสอนนี้โดยการสร้างแพ็คเกจในไฟล์ Perl เดียวกันและสร้างโมดูลในไฟล์อื่น