[Ruby] 類別初探

Posted by Huli on 2014-04-19

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

一個最簡單的類別

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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代表是實體變數的意思
根據我自己的理解,應該就是像

1
2
3
4
5
6
7
8
Class hello{
String name;
String email;
String getName(){
return name;
}
}

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

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

1
2
3
4
class HelloWorld
attr_accessor :name
...
end

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

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

1
2
3
4
5
6
7
8
9
10
11
class Hello
def Hello.hello
end
def self.hello
end
end
class << Hello
def hello...
end

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Hello
@@count = 0
Version = 1
def Hello.count
@@count
end
def hello
@@count+=1
print("hello")
end
end
Hello::Version #=>1