วิธีการเริ่มต้นเป็นส่วนหนึ่งของกระบวนการสร้างวัตถุใน Ruby และช่วยให้คุณสามารถตั้งค่าเริ่มต้นสำหรับวัตถุได้
ในภาษาการเขียนโปรแกรมอื่น ๆ พวกเขาเรียกสิ่งนี้ว่า “คอนสตรัคเตอร์”
ตัวอย่างเช่น :
สมมติว่าคุณมี Point class จุดนี้ต้องการสองพิกัด x &y .
คุณจะส่งผ่านค่าเหล่านี้ไปยังวัตถุอย่างไร
ถูกใจสิ่งนี้ :
Point.new(10, 20)
new วิธีคือวิธีสร้างวัตถุใหม่ใน Ruby จากคลาสเช่น Point หรือชั้นเรียนอื่นๆ ที่คุณสามารถเข้าถึงได้
ความสัมพันธ์ระหว่างสิ่งใหม่และการเริ่มต้น
สังเกตสองอาร์กิวเมนต์ 10 &20 ?
นี่คือที่ที่เรากลับมาที่ initialize วิธีการ
หากคุณพยายามส่งผ่านอาร์กิวเมนต์ไปยัง new &ถ้าคุณไม่กำหนด initialize คุณจะได้รับข้อผิดพลาด:
ArgumentError: wrong number of arguments (2 for 0)
เพราะเมื่อคุณเรียก new , Ruby เรียก initialize !
คุณต้องการสิ่งนี้ :
class Point def initialize(x, y) end end
ตอนนี้คุณสามารถสร้าง Point วัตถุที่มีสองอาร์กิวเมนต์
ดังนั้นจุดรวมของ initialize คือการอนุญาตให้คุณสร้างวัตถุที่มีอาร์กิวเมนต์
การบันทึกข้อโต้แย้ง
อาร์กิวเมนต์ที่ส่งผ่านไปยัง initialize จะไม่ถูกบันทึกโดยอัตโนมัติทุกที่
คุณต้องทำสิ่งนี้โดยใช้ตัวแปรอินสแตนซ์:
class Point
def initialize(x, y)
@x = x
@y = y
end
end
ซึ่งจะกำหนดค่าของ x &y ไปยังตัวแปรอินสแตนซ์ (@x &@y ) เพื่อให้คุณสามารถเข้าถึงได้ในภายหลัง
ข้อควรทราบบางประการเกี่ยวกับ initialize :
- คุณสามารถกำหนดอาร์กิวเมนต์ที่ไม่บังคับและเริ่มต้นได้
- การใช้
returnภายในวิธีนี้ไม่สมเหตุสมผลเพราะมันพิเศษ &มันจะส่งคืนวัตถุใหม่เสมอ - การกำหนด
initializeไม่จำเป็นหากชั้นเรียนของคุณไม่ต้องการการโต้แย้ง
คุณสามารถเรียกวิธีอื่นๆ ภายใน initialize แต่คุณไม่ต้องการที่จะทำงานจริงนอกเหนือจากความจำเป็นในการเตรียมวัตถุที่จะใช้
ตัวอย่างเช่น :
หากชั้นเรียนของคุณเกี่ยวกับการทำงานกับ Github API คุณคงไม่อยากโหลดคำขอที่เป็นไปได้ทั้งหมดล่วงหน้าไปยัง API ล่วงหน้า
คุณเพียงแค่ต้องการบันทึกคีย์ API ลงในตัวแปรอินสแตนซ์
หรือข้อมูลใดๆ ที่ชั้นเรียนของคุณต้องการ
การเริ่มต้นแฮชและออบเจ็กต์ในตัวอื่นๆ
ออบเจ็กต์ในตัว เช่น แฮช มีวิธีพิเศษในการเริ่มต้นและสร้างมัน นอกเหนือไปจากการเรียก new .
วิธีสร้างแฮช :
h = Hash.new
h = Hash['a', 1]
h = {}
วิธีสร้างสตริง :
s = String.new s = "" s = %Q()
วิธีสร้างอาร์เรย์ :
a = Array.new(5) a = %w(a b c) a = []
%w สร้างอาร์เรย์ของสตริง
สรุป
คุณได้เรียนรู้เกี่ยวกับวิธีการเริ่มต้น Ruby แล้วว่าเกี่ยวข้องกับ new .อย่างไร วิธีการและพื้นฐานของการสร้างวัตถุใน Ruby
เรียนรู้ต่อไปโดยอ่านคำแนะนำเบื้องต้นเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุใน Ruby
ขอบคุณสำหรับการอ่าน!