iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
自我挑戰組

Ruby on Rails JS系列 第 9

Ruby on Rails 實體方法與類別方法

依據方法作用的對象不同,有分實體方法(instance method)及類別方法(class method),舉個例子來說:

kitty = Cat.new("kitty", "female")
kitty.say_hello

這個 say_hello 是作用在 kitty 這個「實體」,所以稱這個 say_hello 為實體方法。如果是這樣:

class PostsController < ApplicationController
  def index
    @posts = Post.all    # 取得所有的 Post 資料
  end
end

這裡的 all 方法是直接作用在 Post 這個「類別」上,故稱之類別方法。在 Ruby 要定義類別方法有幾種寫法,其中一種比較簡單的,就是在前面加上 self:

class Cat
  def self.all
  end
end

這樣就可以直接用 Cat.all 的方式呼叫了。下面是另一種寫法:

class Cat
  class << self
    def all
      # ...
    end
  end
end

這樣的寫法跟前面的一樣,但這樣就不需要特別在方法前面加上 self。當一個類別裡面有很多類別方法的時候,我常會選擇這樣的寫法。
[為你自己學Ruby on Rails]https://railsbook.tw/chapters/08-ruby-basic-4.html


上一篇
Ruby 實體變數(instance variable)
下一篇
Ruby on Rails 方法的存取控制
系列文
Ruby on Rails JS29

尚未有邦友留言

立即登入留言