วิธีการเริ่มต้นเป็นส่วนหนึ่งของกระบวนการสร้างวัตถุใน 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
ขอบคุณสำหรับการอ่าน!