0Pricing
Ruby Academy · บทเรียน

การใช้ send และ eval

ค้นพบวิธีเรียกใช้เมธอดแบบไดนามิกและประเมินสตริงให้เป็นโค้ด Ruby

การใช้ send และ eval เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

การเรียกใช้โค้ดแบบพลวัต

การใช้ send และการประเมินโค้ด

Ruby มีเมธอดที่ทรงพลัง เช่น send และ eval สำหรับเรียกใช้โค้ดแบบพลวัต

เมธอดเหล่านี้ช่วยให้เรียกใช้เมธอดแบบพลวัตและประเมินนิพจน์ Ruby ขณะโปรแกรมทำงาน

การใช้ send และ eval — ภาพประกอบ 1

เมธอด send คืออะไร

เมธอด send คืออะไร

send ช่วยให้เรียกใช้เมธอดแบบพลวัตโดยระบุชื่อเมธอด

เมธอดนี้สามารถเรียกใช้เมธอดทั้งแบบส่วนตัวและแบบสาธารณะได้

class Person
  def greet
    'Hello!'
  end
end

p = Person.new
puts p.send(:greet)

การใช้ send พร้อมอาร์กิวเมนต์

การใช้ send พร้อมอาร์กิวเมนต์

send สามารถส่งอาร์กิวเมนต์ให้เมธอดแบบพลวัตได้

class Person
  def greet(name)
    "Hello, #{name}!"
  end
end

p = Person.new
puts p.send(:greet, 'Alice')

การเรียกใช้เมธอดส่วนตัวด้วย send

การเรียกใช้เมธอดส่วนตัวด้วย send

send สามารถข้ามกฎการมองเห็นของเมธอดและเรียกใช้เมธอดส่วนตัวได้

class Person
  private
  def secret
    'This is a secret!'
  end
end

p = Person.new
puts p.send(:secret)

เมธอดสำหรับประเมินโค้ดคืออะไร

เมธอดสำหรับประเมินโค้ดคืออะไร

eval เรียกใช้สตริงในฐานะโค้ด Ruby ขณะโปรแกรมทำงาน

code = "5 + 10"
puts eval(code) # Outputs: 15

การเรียกใช้โค้ดแบบพลวัตด้วยการประเมินโค้ด

การเรียกใช้โค้ดแบบพลวัตด้วยการประเมินโค้ด

eval สามารถกำหนดตัวแปรแบบพลวัตและประเมินนิพจน์ได้

eval("x = 100")
puts x

การกำหนดเมธอดด้วยการประเมินโค้ด

การกำหนดเมธอดด้วยการประเมินโค้ด

ใช้ eval เพื่อกำหนดเมธอดแบบพลวัต

eval("def dynamic_method; 'Hello from eval'; end")
puts dynamic_method

ความเสี่ยงด้านความปลอดภัยของ send และการประเมินโค้ด

ความเสี่ยงด้านความปลอดภัยของ send และการประเมินโค้ด

การใช้ send และ eval อย่างไม่เหมาะสมอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัยได้:

  • eval สามารถเรียกใช้โค้ดที่ไม่น่าเชื่อถือ ซึ่งอาจนำไปสู่ช่องโหว่ด้านความปลอดภัย
  • send สามารถเรียกใช้เมธอดส่วนตัวหรือเมธอดที่มีข้อมูลสำคัญได้
  • ควรใช้อย่างระมัดระวังเพื่อหลีกเลี่ยงพฤติกรรมที่ไม่พึงประสงค์

ทบทวน send และการประเมินโค้ด

ขอแสดงความยินดี!

คุณได้เรียนรู้วิธีใช้ send และ eval เพื่อเรียกใช้เมธอดแบบพลวัต

เนื้อหานี้เป็นบทสรุปของส่วนการเขียนเมตาโปรแกรมใน Ruby

การใช้ send และ eval — ภาพประกอบ 10

คำถามที่พบบ่อย

บทเรียน “การใช้ send และ eval” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การใช้ send และ eval” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การใช้ send และ eval”

ค้นพบวิธีเรียกใช้เมธอดแบบไดนามิกและประเมินสตริงให้เป็นโค้ด Ruby คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การใช้ send และ eval” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เมตาโปรแกรมมิงคืออะไร
  2. การกำหนดเมธอดแบบไดนามิก
  3. คลาสเปิดและการแพตช์แบบลิง
  4. การใช้ send และ eval
← กลับไปที่ Ruby Academy