變數、數字、字串

程式語言的世界由許多種不同類型的資料型態構成,讓我們可以在進行撰寫時針對不同的情況做選擇,今天讓我們來認識基本的幾種類型吧!

變數 Variable

變數指定與使用

變數可以想像成一個標籤,可以貼在各種類型的資料上面,如數字、字串、陣列等,而變數本身沒有型態,被貼上後就成了指定東西的型態。

通常在程式語言中 “=” 並不是大家想的等於,而是指定的意思,被指定過的變數還是可以再指定成別的資料。

在 Ruby 中變數有以下的特性:

  • 使用不須宣告或指定型態,可以直接拿來使用
  • 可以重複被指定
  • 命名使用英文字母、數字或底線的組合、或是非英文字母也可以
  • 常數
1
2
3
4
5
6
7
8
9
10
11
# 變數指定
name = "Sean"
s = 1

#指定多個變數
a,b,c = [1,2,3]

puts name # 印出 Sean
puts s # 印出 1
puts a,c # 印出 1, 3

常數定義

1
2
Food = “rice”
Drink= “coke”

在 Ruby 比較特別的是常數可被修改,會出現警告訊息,但就只是警告而已,不是錯誤訊息,程式仍可正常執行,以大寫開頭命名。

補充:常數跟變數有甚麼不同?

  • 值都可以被修改,變數命名沒有限制,常數開頭用大寫字母命名。
  • 避免使用關鍵字與保留字命名(Keyword & reserved word) ex: if、else、end、then、class、and、begin、do、or……

字串 String

通常以引號包住,可使用單引號或雙引號,可以包任何字元、數字,都可以成為字串。

  • 用單引號或雙引號包住
    • ‘string’ 單引號 (注意用這個不能配合變數帶入#{variable},或是內部有其他單引號出現會失效)
    • “string” 雙引號
1
2
p "hello world"
p 'hello world'
  • %Q & %q
    • %Q 等同雙引號
    • %q 等同單引號
1
2
p %Q (hello world) # 印出 "hello world"
p %q (hello world) # 印出 'hello world'
  • 字串安插(String Interpolation),將字串中帶入變數,非常好用。
1
2
3
4
5
6
7
8
name = "Sean"
age = 18

puts "I'm #{name}, and I am #{age} years old" # I'm Sean, and I am 18 years old
puts 'I'm #{name}, and I am #{age} years old' # 單引號中間又有單引號會失效

puts %Q(I'm #{name}, and I am #{age} years old) # I'm Sean, and I am 18 years old
puts %q(I'm #{name}, and I am #{age} years old) # 同單引號會失效
  • 字串可以看成是許多字元的組合,在 Ruby 的字串可已透過索引方式找到其中的字元 (字排序的索引從 0 開始算)。
1
2
3
4
5
6
7
say_hi = "hello world"

puts say_hi[0] # => 印出 h
puts say_hi[5] # => 印出 空白 (注意空格也是字元)

say_hi[0..5] = "Hi!" #(把第0位到第5位字元重新指定,中間的..是範圍的用法)
puts say_hi # => Hi! World

數字 Number

任何數字組成包含整數(Integer)、小數(Float)都可以算是一種類別,Ruby 裡,整數數值其實就只是 Integer 這個類別的一個實體(instance)而已,小數也是以此類推,後續物件導向部分會再補充。

運算使用

  • 使用加減乘除 + - * /
  • % 取餘數
  • 使用這些運算符號其實也是在使用方法
  • 運算碰到有小數點要特別注意,有用到小數點結果就會有小數點
1
2
3
4
5
6
7
puts 1+2*(5-3) # 先處理括號內,由左至右先乘除後加減 = 5
puts 10/3 #整數除整數等於整數 = 3
puts 10.0/3 #小數除以整數等於小數 = 3.33333

# 實際上的運算符號的方法運作
puts 1 + 1
puts 1.+(1) # 結果同上,其實.+是一個方法後面是參數帶入,其他四則運算也相同

方法

Ruby 有許多特別的數字方法可以直接使用,與其他程式語言不同,因為數字在 ruby 中也是一種物件,有特別設計給數字物件的方法。

1
2
3
4
puts 5.4.round # 轉成整數,四捨五入 => 5
puts 3.65.floor # 轉成整數,無條件捨去 => 3
puts 3.14.ceil # 轉成整數,無條件進位 => 4
puts 3.14.to_i # 轉成整數,無條件捨去 => 3

判斷資料類別可以用.class

1
2
3
4
5
6
7
8
9
name = "Sean"
a = 1

p name.class # String 表示字串類型
p a.class # Integer 表示數字類型中的整數

#如果再往上找 class 會找到?
p Integer.class # Class
p String.class # Class

參考資料:

  1. 為你自己學 Ruby on rails
  2. Ruby Docs - String