วิธีทับทิม

วิธีทับทิมคล้ายกับฟังก์ชั่นการเขียนโปรแกรมภาษาอื่น ๆ วิธีทับทิมสำหรับ 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