- Ruby 基礎
- Ruby - 首頁
- Ruby - 概述
- Ruby - 環境設定
- Ruby - 語法
- Ruby - 類和物件
- Ruby - 變數
- Ruby - 運算子
- Ruby - 註釋
- Ruby - IF...ELSE
- Ruby - 迴圈
- Ruby - 方法
- Ruby - 程式碼塊
- Ruby - 模組
- Ruby - 字串
- Ruby - 陣列
- Ruby - 雜湊表
- Ruby - 日期和時間
- Ruby - 範圍
- Ruby - 迭代器
- Ruby - 檔案 I/O
- Ruby - 異常
Ruby - 方法
Ruby 方法與其他任何程式語言中的函式非常相似。Ruby 方法用於將一個或多個可重複語句捆綁到一個單元中。
方法名稱應以小寫字母開頭。如果以大寫字母開頭,Ruby 可能會將其視為常量,從而導致解析呼叫錯誤。
應在呼叫方法之前定義方法,否則 Ruby 會為未定義的方法呼叫引發異常。
語法
def method_name [( [arg [= default]]...[, * arg [, &expr ]])] expr.. end
因此,您可以定義一個簡單的方法,如下所示:
def method_name expr.. end
您可以這樣表示接受引數的方法:
def method_name (var1, var2) expr.. end
您可以為引數設定預設值,如果在不傳遞所需引數的情況下呼叫方法,將使用這些預設值:
def method_name (var1 = value1, var2 = value2) expr.. end
每當您呼叫簡單方法時,您只需編寫方法名稱,如下所示:
method_name
但是,當您呼叫帶有引數的方法時,您需要編寫方法名稱以及引數,例如:
method_name 25, 30
使用帶引數的方法最重要的缺點是,每當您呼叫此類方法時,都需要記住引數的數量。例如,如果一個方法接受三個引數,而您只傳遞了兩個,則 Ruby 會顯示錯誤。
示例
#!/usr/bin/ruby
def test(a1 = "Ruby", a2 = "Perl")
puts "The programming language is #{a1}"
puts "The programming language is #{a2}"
end
test "C", "C++"
test
這將產生以下結果:
The programming language is C The programming language is C++ The programming language is Ruby The programming language is Perl
方法的返回值
預設情況下,Ruby 中的每個方法都會返回值。此返回值將是最後一個語句的值。例如:
def test i = 100 j = 10 k = 0 end
此方法在被呼叫時將返回最後一個宣告的變數 k。
Ruby return 語句
Ruby 中的 return 語句用於從 Ruby 方法返回一個或多個值。
語法
return [expr[`,' expr...]]
如果給出了兩個以上的表示式,則包含這些值的陣列將是返回值。如果沒有給出表示式,則 nil 將是返回值。
示例
return OR return 12 OR return 1,2,3
請看這個例子:
#!/usr/bin/ruby def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var
這將產生以下結果:
100 200 300
可變數量的引數
假設您聲明瞭一個接受兩個引數的方法,每當您呼叫此方法時,都需要為其傳遞兩個引數。
但是,Ruby 允許您宣告可以處理可變數量引數的方法。讓我們檢查一下它的示例:
#!/usr/bin/ruby
def sample (*test)
puts "The number of parameters is #{test.length}"
for i in 0...test.length
puts "The parameters are #{test[i]}"
end
end
sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"
在此程式碼中,您聲明瞭一個接受一個引數 test 的方法 sample。但是,此引數是可變引數。這意味著此引數可以接收任意數量的變數。因此,上述程式碼將產生以下結果:
The number of parameters is 3 The parameters are Zara The parameters are 6 The parameters are F The number of parameters is 4 The parameters are Mac The parameters are 36 The parameters are M The parameters are MCA
類方法
當方法在類定義之外定義時,預設情況下該方法被標記為 private。另一方面,在類定義中定義的方法預設情況下被標記為 public。方法的預設可見性和 private 標記可以透過模組的 public 或 private 來更改。
每當您想要訪問類的某個方法時,您首先需要例項化該類。然後,使用該物件,您可以訪問類的任何成員。
Ruby 提供了一種無需例項化類即可訪問方法的方式。讓我們看看類方法是如何宣告和訪問的:
class Accounts def reading_charge end def Accounts.return_date end end
請注意方法 return_date 是如何宣告的。它以類名稱後跟一個句點宣告,後跟方法名稱。您可以直接訪問此類方法,如下所示:
Accounts.return_date
要訪問此方法,您無需建立 Accounts 類的物件。
Ruby alias 語句
這為方法或全域性變數提供別名。別名不能在方法體內部定義。即使方法被覆蓋,方法的別名也會保留方法的當前定義。
禁止為編號的全域性變數 ($1, $2,...) 定義別名。覆蓋內建全域性變數可能會導致嚴重問題。
語法
alias method-name method-name alias global-variable-name global-variable-name
示例
alias foo bar alias $MATCH $&
這裡我們為 bar 定義了 foo 別名,而 $MATCH 是 $& 的別名。
Ruby undef 語句
這取消了方法定義。undef 不能出現在方法體內部。
透過使用 undef 和 alias,可以獨立於超類修改類的介面,但請注意,這可能會破壞程式透過內部方法呼叫自身。
語法
undef method-name
示例
要取消定義名為 bar 的方法,請執行以下操作:
undef bar