ทับทิมบล็อก
คุณรู้อยู่แล้วว่าวิธีการกำหนดวิธีทับทิมและวิธีที่คุณเรียกวิธี ในทำนองเดียวกันทับทิมมีแนวคิดของบล็อกที่
- บล็อกประกอบด้วยมากรหัส
- คุณจำเป็นต้องใช้ชื่อบล็อก
- การป้องกันรหัสถูกปิดล้อมอยู่ในวงเล็บปีกกา {} ภายใน
- จากการที่มันได้เคยปิดกั้นการเรียกฟังก์ชั่นที่มีชื่อเดียวกันซึ่งหมายความว่าหากชื่อบล็อกของคุณสำหรับการทดสอบแล้วคุณต้องการที่จะใช้เพื่อเรียกสิ่งนี้ว่าการทดสอบฟังก์ชั่นบล็อก
- คุณสามารถใช้คำสั่งที่อัตราผลตอบแทนที่จะเรียกบล็อก
ไวยากรณ์
block_name{ statement1 statement2 .......... }
ที่นี่คุณจะได้เรียนรู้วิธีการใช้คำสั่งที่อัตราผลตอบแทนที่ง่ายต่อการเรียกบล็อกนอกจากนี้คุณยังจะได้เรียนรู้วิธีการใช้คำสั่งที่อัตราผลตอบแทนที่มีพารามิเตอร์ให้กับบล็อกที่เรียกว่าในตัวอย่างคุณจะเห็นทั้งสองประเภทของคำสั่งที่อัตราผลตอบแทน
งบผลผลิต
ลองดูที่คำสั่งตัวอย่างเช่นอัตราผลตอบแทน:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test puts "在 test 方法内" yield puts "你又回到了 test 方法内" yield end test {puts "你在块内"}
ตัวอย่างของผลการดำเนินงานดังกล่าวข้างต้นดังต่อไปนี้:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
นอกจากนี้คุณยังสามารถส่งผ่านคำสั่งที่อัตราผลตอบแทนที่มีพารามิเตอร์ นี่คือตัวอย่าง:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test yield 5 puts "在 test 方法内" yield 100 end test {|i| puts "你在块 #{i} 内"}
ตัวอย่างของผลการดำเนินงานดังกล่าวข้างต้นดังต่อไปนี้:
你在块 5 内 在 test 方法内 你在块 100 内
ที่นี่หลังจากคำสั่งที่อัตราผลตอบแทนที่ใช้พารามิเตอร์คุณยังสามารถส่งผ่านพารามิเตอร์หลาย ในบล็อกคุณสามารถวางตัวแปรระหว่างสองแถบแนวตั้งที่จะยอมรับพารามิเตอร์ ดังนั้นในโค้ดข้างต้นให้ผลผลิต 5 คำสั่งจะถูกส่งเป็นพารามิเตอร์ค่าของ 5 ชิ้นทดสอบ
ตอนนี้มองไปที่คำสั่งต่อไปนี้:
test {|i| puts "你在块 #{i} 内"}
ที่นี่คุ้มค่า 5 จะได้รับฉันตัวแปร ตอนนี้เราใส่สังเกตคำสั่งต่อไป
puts "你在块 #{i} 内"
ซึ่งจะทำให้คำสั่งผลลัพธ์คือ:
你在块 5 内
หากคุณต้องการที่จะผ่านหลายพารามิเตอร์แล้วงบผลผลิตที่ได้จะเป็นดังนี้:
yield a, b
ในเวลานี้ตามที่ปรากฏในบล็อก:
test {|a, b| statement}
พารามิเตอร์คั่นด้วยเครื่องหมายจุลภาค
บล็อกและวิธีการ
คุณได้เห็นระหว่างบล็อกและวิธีการวิธีการความสัมพันธ์ คุณมักจะใช้คำสั่งผลผลิตเรียกบล็อกจากวิธีการที่มีชื่อเดียวกัน ดังนั้นรหัสจะเป็นดังนี้:
#!/usr/bin/ruby def test yield end test{ puts "Hello world"}
ตัวอย่างนี้เป็นวิธีที่ง่ายที่สุดในการบรรลุบล็อกคุณใช้คำสั่งผลผลิตเรียกบล็อกทดสอบ
แต่ถ้าพารามิเตอร์สุดท้ายก่อนที่จะใช้วิธีการที่มีและจากนั้นคุณสามารถวิธีการที่ถูกส่งผ่านบล็อกและบล็อกนี้อาจจะได้รับมอบหมายให้พารามิเตอร์ที่ผ่านมา ถ้า * และและยังปรากฏในรายการพารามิเตอร์และควรวางไว้ที่ด้านหลัง
#!/usr/bin/ruby def test(&block) block.call end test { puts "Hello World!"}
ตัวอย่างของผลการดำเนินงานดังกล่าวข้างต้นดังต่อไปนี้:
Hello World!
เริ่มต้นและบล็อก END
ทุกแฟ้มแหล่งทับทิมสามารถประกาศเมื่อบล็อกรหัส (บล็อก BEGIN) เมื่อไฟล์ถูกโหลดการทำงานและหลังจากที่โปรแกรมเสร็จสิ้นการดำเนินการบล็อกรหัสเพื่อใช้ใน (จบ block)
#!/usr/bin/ruby BEGIN { # BEGIN 代码块 puts "BEGIN 代码块" } END { # END 代码块 puts "END 代码块" } # MAIN 代码块 puts "MAIN 代码块"
โปรแกรมสามารถมีหลายบล็อกเริ่มต้นและสิ้นสุด บล็อก BEGIN จะถูกดำเนินการในลำดับที่ปรากฏ บล็อก END ตามที่ปรากฏในลำดับที่กลับ เมื่อดำเนินการโครงการดังกล่าวข้างต้นก่อให้เกิดผลลัพธ์ต่อไปนี้:
BEGIN 代码块 MAIN 代码块 END 代码块