Huli's Blog

Learning by sharing

[Ruby] 類別初探

| Comments

用這篇筆記一下跟ruby的物件導向有關的東西

一個最簡單的類別

class HelloWorld
  def initialize(myname="aaa")
    @name = name
  end
  
  def hello
    puts("hello",@name)
  end

  def name
    return @name
  end
  
  def name=(value)
    @name = value
  end
  
end

bob = HelloWorld.new("bob")
bob.hello
bob.name
bob.name = "cool"

@name代表是實體變數的意思
根據我自己的理解,應該就是像

Class hello{
  String name;
  String email;
  
  String getName(){
    return name;
  }
}

裡面的那些name跟email一樣
(太久沒寫c++跟java 我都忘記語法是怎樣了...沒關係,意思有到就好)

但是這樣自己寫getter跟setter無敵麻煩
所以可以

class HelloWorld
  attr_accessor :name
  ...
end

一行搞定
如果想要只提供讀/寫
attr_reader or attr_writer

如果要寫類別方法的話,有三種寫法

class Hello
  def Hello.hello
  end
  
  def self.hello
  end
end

class << Hello
  def hello...
end

類別變數的話則是用@@開頭
常數則是直接定義在開頭,用::存取

class Hello
  @@count = 0
  Version = 1
  
  def Hello.count
    @@count
  end
  
  def hello
    @@count+=1
    print("hello")
  end
end

Hello::Version   #=>1

Comments

comments powered by Disqus