Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เชี่ยวชาญเมธอด Initialize ใน Ruby: คู่มือขั้นตอน

เมธอด initialize เป็นส่วนหนึ่งของกระบวนการสร้างออบเจ็กต์ใน Ruby และช่วยให้คุณตั้งค่าเริ่มต้นสำหรับออบเจ็กต์

ในภาษาโปรแกรมอื่น เรียกมันว่า "constructor" (คอนสตรัคเตอร์)

ตัวอย่าง:

สมมติว่าคุณมีคลาส Point จุดนี้ต้องการพิกัดสองค่า x และ y

คุณจะส่งค่าเหล่านี้เข้าไปในออบเจ็กต์อย่างไร?

เช่นนี้:

Point.new(10, 20)

เมธอด new คือวิธีที่คุณสร้างออบเจ็กต์ใหม่ใน Ruby จากคลาสอย่าง Point หรือคลาสอื่นๆ ที่คุณเข้าถึงได้

ความสัมพันธ์ระหว่าง New และ Initialize

สังเกตอาร์กิวเมนต์สองตัวนี้ 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:

  • คุณสามารถกำหนด optional และ default arguments ได้
  • การใช้ return ภายในเมธอดนี้ ไม่มีความหมาย เพราะมันพิเศษและจะ คืนค่าออบเจ็กต์ใหม่เสมอ
  • การกำหนด initialize ไม่จำเป็น หากคลาสของคุณไม่ต้องการอาร์กิวเมนต์

คุณสามารถเรียกเมธอดอื่นภายใน initialize ได้ แตคุณไม่อยากทำงานจริงจังที่นี่ นอกจากสิ่งที่จำเป็นต่อการเตรียมออบเจ็กต์ให้พร้อมใช้งาน

ตัวอย่าง:

ถ้าคลาสของคุณเกี่ยวกับการทำงานกับ Github API คุณไม่อยากโหลดคำขอทั้งหมดที่เป็นไปได้ไปที่ API ก่อนเวลา

คุณแค่อยากบันทึก API key ลงในตัวแปรอินสแตนซ์

หรือข้อมูลอะไรก็ตามที่คลาสของคุณต้องการ

การ Initialize Hashes และ Built-in Objects อื่นๆ

ออบเจ็กต์ built-in เหมือน hashes มีวิธีพิเศษในการ initialize และสร้าง นอกเหนือจากการเรียก new

วิธีสร้าง hash:

h = Hash.new
h = Hash['a', 1]
h = {}

วิธีสร้าง string:

s = String.new
s = ""
s = %Q()

วิธีสร้าง array:

a = Array.new(5)
a = %w(a b c)
a = []

%w สร้างอาร์เรย์ของสตริง

สรุป

คุณได้เรียนรู้เกี่ยวกับเมธอด initialize ของ Ruby ความสัมพันธ์กับเมธอด new และพื้นฐานการสร้างออบเจ็กต์ใน Ruby

เรียนรู้ต่อได้จากบทนำนี้เกี่ยวกับ Object-Oriented Programming ใน Ruby

ขอบคุณที่อ่านครับ!