วิธีทับทิม
วิธีทับทิมคล้ายกับฟังก์ชั่นการเขียนโปรแกรมภาษาอื่น ๆ วิธีทับทิมสำหรับ bundling หนึ่งหรือมากกว่างบที่ซ้ำกันเป็นหนึ่งหน่วย
ชื่อวิธีควรเริ่มต้นด้วยตัวอักษรตัวพิมพ์เล็ก ถ้าคุณอยู่ในตัวอักษรพิมพ์ใหญ่เป็นจุดเริ่มต้นของชื่อวิธีที่ทับทิมอาจจะใช้มันเป็นอย่างต่อเนื่องส่งผลให้การไม่ถูกต้องแยกโทร
ก่อนที่จะเรียกวิธีการที่ควรจะกำหนดไว้เป็นอย่างอื่นทับทิมจะผลิตยกเว้นเรียกวิธีการที่ไม่ได้กำหนด
ไวยากรณ์
def method_name [( [arg [= default]]th.[, * arg [, &expr ]])] exprth end
ดังนั้นคุณสามารถกำหนดวิธีการที่ง่ายดังนี้
def method_name exprth end
คุณสามารถกำหนดวิธีการที่จะยอมรับพารามิเตอร์ดังต่อไปนี้:
def method_name (var1, var2) exprth end
คุณสามารถตั้งค่าเริ่มต้นสำหรับพารามิเตอร์พารามิเตอร์ไม่จำเป็นต้องส่งค่าเริ่มต้นถ้าโทรวิธีการ:
def method_name (var1=value1, var2=value2) exprth end
เมื่อคุณต้องการที่จะเรียกวิธีการเพียงแค่ใช้ชื่อวิธีดังต่อไปนี้:
method_name
อย่างไรก็ตามเมื่อคุณเรียกวิธีการที่มีพารามิเตอร์พารามิเตอร์ที่คุณต้องใช้เมื่อเขียนชื่อวิธีตัวอย่างเช่น:
method_name 25, 30
วิธีการใช้พารามิเตอร์อุปสรรคที่ใหญ่ที่สุดคือความต้องการที่จะจำหมายเลขของพารามิเตอร์เมื่อเรียกวิธีการ ตัวอย่างเช่นถ้าคุณเป็นคนหนึ่งที่ยอมรับวิธีสามพารามิเตอร์เพียงผ่านสองอาร์กิวเมนต์ทับทิมจะแสดงข้อผิดพลาด
ตัวอย่าง
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test(a1="Ruby", a2="Perl") puts "编程语言为 #{a1}" puts "编程语言为 #{a2}" end test "C", "C++" test
เรียกเอาท์พุทตัวอย่างข้างต้นคือ
编程语言为 C 编程语言为 C++ 编程语言为 Ruby 编程语言为 Perl
ค่าตอบแทนจากวิธีการ
ทับทิมแต่ละวิธีการส่งกลับค่าเริ่มต้น ค่านี้เป็นค่าส่งกลับโดยคำสั่งที่ผ่านมา ตัวอย่างเช่น:
def test i = 100 j = 10 k = 0 end
เมื่อเรียกวิธีการนี้จะกลับมาประกาศสุดท้ายของ K ตัวแปร
คำสั่งกลับทับทิม
ทับทิมในงบการกลับมาใช้ในการแสดงหนึ่งหรือมากกว่าค่าจากวิธีทับทิม
ไวยากรณ์
return [expr[`,' exprth.]]
หากมีมากกว่าสองสำนวนที่จะได้รับอาร์เรย์ที่มีค่าเหล่านี้จะได้รับค่าตอบแทน หากไม่มีการแสดงออกจะได้รับจะไม่มีค่าตอบแทน
ตัวอย่าง
return 或 return 12 或 return 1,2,3
พิจารณาตัวอย่างต่อไปนี้:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var
เรียกเอาท์พุทตัวอย่างข้างต้นคือ
100 200 300
จำนวนตัวแปรของการขัดแย้ง
สมมติว่าคุณกำหนดวิธีการที่จะใช้เวลาสองข้อโต้แย้งเมื่อคุณเรียกวิธีการนี้คุณยังต้องผ่านสองพารามิเตอร์
แต่ทับทิมช่วยให้คุณสามารถที่จะประกาศจำนวนตัวแปรของพารามิเตอร์ ลองดูตัวอย่างต่อไปนี้:
#!/usr/bin/ruby # -*- coding: UTF-8 -*- def sample (*test) puts "参数个数为 #{test.length}" for i in 0th.test.length puts "参数值为 #{test[i]}" end end sample "Zara", "6", "F" sample "Mac", "36", "M", "MCA"
ในรหัสนี้คุณได้ประกาศวิธีการของตัวอย่างยอมรับการทดสอบพารามิเตอร์ อย่างไรก็ตามพารามิเตอร์นี้เป็นพารามิเตอร์ตัวแปร นี่ก็หมายความว่าพารามิเตอร์ที่อาจจะให้มีจำนวนที่แตกต่างกันของตัวแปร เรียกเอาท์พุทตัวอย่างข้างต้นคือ
参数个数为 3 参数值为 Zara 参数值为 6 参数值为 F 参数个数为 4 参数值为 Mac 参数值为 36 参数值为 M 参数值为 MCA
วิธีการเรียน
เมื่อภายนอกวิธีการวิธีการที่กำหนดไว้ในระดับเริ่มต้นทำเครื่องหมายเป็นส่วนตัวในทางตรงกันข้ามถ้าวิธีการที่กำหนดไว้ในระดับที่เริ่มต้นถูกทำเครื่องหมายเป็นสาธารณะ
วิธีการเริ่มต้นของการมองเห็นและแท็กส่วนตัวสามารถเปลี่ยนแปลงได้ผ่านโมดูล(Module)ในที่สาธารณะหรือส่วนตัว
เมื่อคุณต้องการในการเข้าถึงวิธีการเรียนที่คุณต้อง instantiate ชั้นเรียน จากนั้นใช้วัตถุที่คุณสามารถเข้าถึงสมาชิกของชั้นเรียนใด ๆ
ทับทิมมีวิธีการเข้าถึงโดยไม่ต้องใช้วิธีการ instantiation ลองมาดูวิธีการประกาศและการเข้าถึงวิธีการเรียนไปนี้:
class Accounts def reading_charge end def Accounts.return_date end end
เรารู้อยู่แล้วว่าคำสั่ง RETURN_DATE วิธีการ มันเป็นหลังจากที่ชื่อชั้นตามด้วยจุดตามด้วยชื่อวิธีการหลังจากที่จุดที่จะประกาศ คุณโดยตรงสามารถเข้าถึงวิธีการเรียนดังนี้
Accounts.return_date
ในการเข้าถึงวิธีนี้คุณไม่จำเป็นต้องสร้างบัญชีชั้นวัตถุ
คำสั่งนามแฝงทับทิม
คำสั่งนี้จะถูกนำมาใช้เป็นวิธีการหรือตัวแปรระดับโลกจากนามแฝง นามแฝงไม่สามารถกำหนดภายในร่างกายวิธีการ แม้ว่าวิธีการที่ถูกแทนที่วิธีนามแฝงยังคงความหมายในปัจจุบันของวิธีการ
จำนวนของตัวแปรทั่วโลก ($ 1, $ 2, th. ) จากนามแฝงไม่ได้ เขียนในตัวตัวแปรทั่วโลกสามารถทำให้เกิดปัญหาร้ายแรง
ไวยากรณ์
alias 方法名 方法名 alias 全局变量 全局变量
ตัวอย่าง
alias foo bar alias $MATCH $&
ที่นี่เราได้กำหนดนามแฝงสำหรับ foo บาร์เพื่อกำหนดนามแฝงสำหรับ $ และ $ MATCH
คำสั่งทับทิมundef
คำสั่งนี้จะใช้ในการยกเลิกคำนิยามวิธีการundefไม่สามารถปรากฏภายในร่างกายวิธีการ
โดยใช้นามแฝงundefและอินเตอร์เฟซชั้นสามารถปรับเปลี่ยนเป็นอิสระจากผู้ปกครองชั้นเรียนแต่โปรดทราบว่าเมื่อวิธีการภายในของตัวเองเรียกมันอาจทำลายโปรแกรม
ไวยากรณ์
undef 方法名
ตัวอย่าง
ตัวอย่างต่อไปนี้จะถูกยกเลิกนิยามวิธีบาร์ชื่อ:
undef bar