Chiayin's blog

【2020 12th鐵人賽】Ruby名詞解釋總匯 - Day 11 : Ruby的「物件導向程式設計-方法」

字數統計: 653閱讀時間: 2 min
2022/10/30


圖片來源點這邊

方法 Method

*英文發音
首先來聽聽英文發音~。
Yes

什麼是方法呢?

在物件導向程式語言中,我們將程式法擬人化,讓設計者更方便使用程式碼,而「物件」本身含有「狀態」與「行為」,因此物件應有自己的運作方式。

當我們將訊息傳給物件,物件便會回應我們的需求,不一定需要了解物件內實際的運作方式。而這個允許我們要求物件執行的工作,就稱之為方法(method)。

如何使用方法?

*首先:定義方法

在Ruby世界,使用defend來定義方法。
後面加上括號()可以傳入參數,若想要傳多個參數可以使用逗號,

1
2
3
def eat(food)
puts "So delicious #{food}"
end

*第二:呼叫方法
方法定義好在那邊,其實是無法使用的,若我們要執行已經定義好的方法,可以利用:

  1. 點符號.來呼叫方法,接收的物件位於符號左側。
  2. 或是直接呼叫也可以。
  3. 定義方法時,Ruby會將方法名稱存成符號(symbol),可使用內建send來呼叫。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1.點符號
foo = "abc"
puts foo.length -> 3

foo = ["abcde", "fghij"]
puts foo.length -> 2

# 2.直接呼叫
def eat(food)
puts "So delicious #{food}!"
end

eat("tofu") -> # So delicious tofu!

# 省略小括號直接呼叫
eat "tofu" -> # So delicious tofu!

# 3.send呼叫
def eat
puts "So delicious!"
end

send(:eat) -> # So delicious!

PS:

  • length:可以計算長度
  • 省略小括號:Ruby開發者希望設計者可以輕鬆靈活使用程式碼,因此設計許多小巧思在Ruby裏頭,「省略小括號」便是其中之一,讓程式碼閱讀起來更像文章。因此大家在轉換語言時要注意其他程式語言可不像Ruby這麼省略唷!

變數與方法

由於Ruby省略小括號的關係,使得方法看起來跟區域變數長得一樣,若同一個範圍內遇到兩者,該如何分別印出呢?

1
2
3
4
5
6
7
8
eat = tofu # eat變數指向tofu

def eat # 定義eat 方法有vegetables
vegetables
end

put eat -> # tofu
put eat() -> # vegetables

以上例子可以得知,兩者同時存在會以區域變數為優先,若要呼叫方法,加上()就可以囉!

參考資料

本文於 2020-09-18 發表在舊網站。

發佈日期:2022-10-30

更新日期:2022-10-30

CATALOG
  1. 1. 方法 Method
    1. 1.1. 什麼是方法呢?
    2. 1.2. 如何使用方法?
    3. 1.3. 變數與方法
    4. 1.4. 參考資料