บทที่ 4 : Operator และการกำหนดค่า ให้กับตัวแปรชนิด Array
การกำหนดค่า และการดำเนินการ กับตัวแปรชนิด Array
ในการเขียนโปรแกรม ภาษา Perl ถึงแม้จะใช้วิธีการ (expression) ที่เหมือนกัน
แต่ใช้กับข้อมูลที่ต่างกัน ก็จะผลลัพธ์ที่ต่างกัน ดูตัวอย่างต่อไปนี้
@book=("cartoon","computer magazine");
@morebook=("travel magazine", @cartoon, "internet magazine");
@morebook=("travel magazine", "cartoon", "computer magazine", "internet magazine");
ในบรรทัดที่สอง ของชุดคำสั่ง จะนำตัวแปร array ที่ชื่อว่า @cartoon มาแตกย่อยออกมา เพราะฉนั้น
ผลของชุดคำสั่ง บรรทัดที่สอง จึงเหมือนกับผล ของชุดคำสั่ง ในบรรทัดที่สาม (บางคนอาจจะ เข้าใจไปว่า
ผลของบรรทัดที่สอง จะทำให้เกิด array สองมิติ ไม่ใช่นะครับ)
สำหรับการ เพิ่มข้อมูลเข้า array วิธีการที่ดีที่สุด แนะนำให้ใช้ function push
ตัวอย่างการใช้ function push
push(@morebook , "game magazine");
จะนำข้อมูล "game magazine" ไปใส่ต่อท้าย ตัวแปร array ที่ชื่อว่า @morebook
ถ้าหากต้องการ เพิ่มข้อมูลมากกว่า 2 ชุดเข้าสู่ ตัวแปรแบบ array สามารถทำได้ โดยใช้รูปแบบใด รูปแบบหนึ่ง
ตามตัวอย่างต่อไปนี้
push(@morebook, "game magazine" , "newspaper");
push(@morebook,"(game magazine", "newspaper"));
push(@morebook, @otherbook);
หลังจากที่ตัว function push ทำงานข้อมูล ก็จะถูกเพิ่มเข้าไปใน array ที่ต้องการ
ส่วนตัว function push เองจะส่งค่ากลับ มาเป็นขนาดของ ตัวแปร array ที่ถูกเพิ่ม ข้อมูลเข้าไป
หากต้องการที่จะนำข้อมูล ตัวท้ายสุดของตัวแปร array ออกจากตัวแปร array สามารถทำได้โดยใช้
function pop จากตัวแปร array ตัวอย่าง ที่ผ่านมาเมื่อใช้ function pop ตัว
function pop จะส่งค่ากลับ "newspaper" มา และตัวแปร array @morebook
จะมีสมาชิกลดลง ดูตัวอย่างการใช้ function pop
$newdata = pop(@morebook); # Now $newdata = "newspaper"
เราสามารถกำหนด ค่าตัวแปร array ให้กับตัวแปรแบบ scalar ได้ด้วยเช่นกัน
แต่ต้องระวัง ในการระบุค่า ที่จะกำหนดให้ ให้สังเกต บรรทัดคำสั่ง สองคำสั่งต่อไปนี้
$n = @morebook
จะนำขนาด ของตัวแปร @morebook ไปกำหนดค่า ให้กับตัวแปร $n แต่
$n = "@morebook"
จะเปลี่ยนข้อมูล สมาชิกในตัวแปร array เป็น ข้อมูลแบบข้อความ โดยแบ่งสมาชิกแต่ละตัวใน array ออกจากกัน
โดยใช้ ช่องว่าง (space)
นอกจากนี้ ยังมีรูปแบบ การกำหนดข้อมูล ของตัวแปร array ให้กับตัวแปร scalar แบบอื่น
อีกดังตัวอย่าง
|
|
คำอธิบาย |
| ($a, $b) = ($c, $d); |
ได้ผลลัพธ์เท่ากับ $a = $c; $b = $d; |
| ($a, $b) = @morebook |
$a และ $b จะเป็นสมาชิก สองตัวแรกของ @morebook ตามลำดับ |
| ($a, @newdata) = @ morebook |
$a จะเป็นสมาชิก ตัวแรกของ @morebook และ @newdata จะมีค่าเป็นสมาชิก ตัวที่เหลือของ @morebook |
ถ้าหากต้องการ ค้นหาดัชนี ของสมาชิก ตัวสุดท้ายใน ตัวแปร array ดูตัวอย่าง ของการใช้งานกับ ตัวแปร
array @morebook จะใช้วิธีการดังนี้
$#morebook
เนื้อหาส่วนถัดไป.. ->