在 Ruby 的世界裡,幾乎什麼東西都是物件,即使是看起來很單純的數字,事實上它也是一個數字物件,本篇文章我們就來認識 Ruby 的符號(Symbol)
一、Ruby 世界裡的符號(Symbol)是什麼
可以想成「符號=有被命名的物件( an object with a name )」,屬於「值或物件」的概念( 符號==值(or物件) ),而非「變數」的概念( 符號!=變數 )。
跑程式碼會出現以下:
「p :hello」跑出來「:hello」;「p 2」跑出來「2」。
「變數成立」的成功寫法:「x=”小松菜奈”」
「非變數不成立」的錯誤寫法:「2=”小松菜奈”」、「 :hello=”小松菜奈”」
舉例來說,今天我們創造一個物件,將他命名為「小松菜奈」,透過程式碼寫出來長這樣「:小松菜奈」,這就是「==符號==」。這個物件(值)為「小松菜奈」,我們不能代入「大塚愛」或「松嶋菜菜子」,讓小松菜奈變成另外兩種物件,這樣是不可以的。
PS:「變數」與「值」的分辨
- 變數(Variable)。
- 在數學的角度來看,變數是指沒有固定的值,可以”改變的數”。這些變數通常使用英文字母或拉丁字母表示,Ex: x、y、z……等,大多數人在國中數學課的「二元一次方程式」與變數初次見面。
- 在程式設計中,變數(英語:Variable,scalar)是指一個包含部分已知或未知數值或資訊(即一個值)之儲存位址,以及相對應之符號名稱(識別字)。
在程式設計中,變數的值不一定要為方程或數學公式之一部分。程式設計中的變數可使用在一段可重復的程式:在一處賦值,然後使用於另一處,接著在一次賦值,且以相同方式再使用一次(見疊代)。程式設計中的變數通常會給定一個較長的名稱,以描述其用途;數學中的變數通常較為簡潔,只給定一、兩個字母,以方便抄寫及操作。
值(Value)
是一無法進一步求值的表達式。[1]例如,表達式「1 + 2」不是一個值,因為它可以被化簡為表達式「3」。表達式「3」不能夠繼續化簡,因此它是一個值。小結
「變數」:可代入、內容物可變動。
「值/物件」:不可代入、不可修改、已經塑造好的個體,不可變動。
二、符號、數字、字串?
符號、數字、字串的認識:
看起來相像的三個物件,讓我們透過表格來了解他們的差異。
「符號」與「字串」的差別:
(1) 「符號」不可以變動;「字串」可以改變。
(2) 「字串」的效能比「符號」差一點點。
1 | 舉例 1: |
程式碼跑出來:axcdefg
1 | 舉例 2: |
程式碼跑出來出現錯誤訊息:undefined method
1 | 舉例 3: |
1 | 舉例 4: |
三、結論:寫程式該選則「字串」還是「符號」
情境一:當你寫的資料不可變,選擇符號。
情境二:當你寫的資料需要有多變使用方法,例如:排序、翻轉……等,選擇字串。
不同的情境選用不同的物件,讓你在寫 Ruby 時更加上手唷!
謝謝觀看。
四、參考資料
- 為你自己學 Ruby on Rails
- 維基百科
本文於 2020-05-12 發表在舊網站。