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 標記可以透過模組的 publicprivate 來更改。

每當您想要訪問類的某個方法時,您首先需要例項化該類。然後,使用該物件,您可以訪問類的任何成員。

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 不能出現在方法體內部。

透過使用 undefalias,可以獨立於超類修改類的介面,但請注意,這可能會破壞程式透過內部方法呼叫自身。

語法

undef method-name

示例

要取消定義名為 bar 的方法,請執行以下操作:

undef bar
廣告

© . All rights reserved.