iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 8
0
自我挑戰組

rails 學習紀錄系列 第 8

[Day8] 類別中的方法(methods in class)

  • 分享至 

  • xImage
  •  

類別中的方法主要可以分成實體方法(instance methods)和類別方法(class methods):
實體方法(instance method):能夠在實例上被使用的方法,大部分類別中的方法都是屬於實例方法。
類別方法(class method):能夠在類別(class)上被使用的方法


實體方法(instance method)

1.在 class 中直接建立的 method 就是 instance method
2.它可以被該 class 所建立的 instance 所使用,亦可代入參數

class Cat
  def hello(name)
    puts "Hello #{name}"
  end
end
instance = Cat.new     # 實際.new出一個屬於Cat的實體物件instance
instance.hello "Kitty"    # 這個 hello method,直接作為於實體 instance 上,稱作 instance method。

類別方法(class method)

給類別本身所使用的方法,它不需要製造出實體物件就可以使用

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

這裡的 all 方法是直接作用在 Post 這個「類別」上,故稱之類別方法。

定義類別方法寫法 :使用關鍵字 self 建立 class method

  1. 在名稱前面上加上self
  class Cat
    def self.all
      # ...
    end
  end
  1. 由於上面的寫法每定義一個類別方法都需要在方法名稱前加上self,當一個類別裡面有很多類別方法的時候,通常會選擇這樣的寫法。
class Cat

  #實體方法放這裡

  class << self
     def all   #類別方法放這裡
         #...
     end
  end

end


上一篇
[Day7]關於模組(Module)
下一篇
[Day9]關於Rails ActiveRecord
系列文
rails 學習紀錄14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言