JT's Blog

Do the right things and do the things right.

Basic of Ruby

| Comments

必須知道的網站

  1. http://ruby-doc.org/
    1. core:核心程式,也就是執行ruby 一定要載入的程式
    2. std-lib:標準套件,要使用require 載入,例如:Time
  2. https://www.ruby-toolbox.com/
    1. ruby gems
    2. D.R.Y. 不要自己造輪子

Ruby Object

Ruby 萬物皆物件,所以要先知道物件屬於什麼Class,有哪些methods 可以使用

1
2
3
$ "123".class
$ String.methods
# 如果method 不熟,就可以到doc 查詢說明與用法

基本型別

Fixnum/Bignum, Float, Array, String, Nil, True, False

變數命名規則

  • local variable:以英文字或是下底線開頭
  • global variable:以$ 開頭
  • instance variable:以@開頭命名
  • class variable:以@@開頭命名
  • constant:常量,為全英文大寫命名,常用設定環境變數

多重賦值

只要等號兩邊結構一致,在複雜的結構,多重賦值皆可輕鬆對應

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a,b,c = 1,2,3

a,*b,c = 1,2,3,4,5,6
# [1,[2,3,4,5],6]

a,b,*c = 1,2,3,4,5,6
# [1,2,[3,4,5,6]

# 交換值
a,b=0,1
a,b=b,a

# 分配陣列值
ary = [1,2]
a,b = ary

# 取得槽狀陣列元素
ary = [1,[2,3],4]
a,b,c = ary

# 取得槽狀陣列組合
ary = [1,[2,3],4]
a,(b1,b2),c = ary

三元判斷式(if)

1
2
3
4
5
6
7
8
if x > 10
  puts "bigger"
else
  puts "smaller"
end

# 上下相同
(x>10) ? "bigger" : "smaller"

if Condition, unless Condition

if 和unless 可以放在希望執行的程式後面

1
2
3
puts "a is bigger than b" if a > b

puts "a is bigger than b" unless a < b

Array

使用[]表示

Hash

key, value 的組合,使用{}表示

建立key, value 可以使用以下兩種方式

1
2
3
4
5
6
7
8
9
hash = {}
hash[:name] = "james"

# equivalent to
hash = { name: "james" }

# equivalent to
# => == Hash Rocket
hash = { :name => "james" }

Symbol vs. String

  • 每建立一個String 物件,就會產生一個新的String 物件
  • Symbol 是有名字的物件,一個名字只會有一個,不可修改(immutable),也不能賦予值,當作hash key
  • #很多人也搞不懂Symbol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# String
3.times { puts "foo".object_id }
# 70094949931660
# 70094949931540
# 70094949931480

# Symbol-1
3.times { puts :foo.object_id }
# 1149788
# 1149788
# 1149788

# Symbol-2
present1 = { :toy => "cars"}
present2 = { :toy => "dolls"}
p present1[:toy] # cars
p present2[:toy] # dolls

深入了解Classes

如果在使用上有問題,可以到Ruby Doc Classes 查看說明

Reference

  • RailsFun.tw 新手教學
  • Ruby Programming ver.4

Comments