iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
0
自我挑戰組

Ruby and Rails 的二三事系列 第 1

Ruby and Rails 的二三事 - Day01 變數與常數

寫在前面:

如果你和我一樣是新手,只是想了解一下 Ruby 寫起來是什麼感覺,
我會推薦 Repl 這個網站。
算是線上練習的一個好幫手。

如果你是想實作或是練習 Rails 的專案:

  • 如果你是Windows 的使用者,那你可以:
    1.買一台二手Mac。
    2.買一台Mac。
    3.買很多台Mac。(I'm not kidding)

謀啦,網路上有很多教學文:找一天比較有空的時候,爬個文,兩三下就搞定!
Microsoft - WSL基本安裝

  • 如果你已經在使用Mac:

那你可以參考下列文章,或是網路上滿滿的教學文,完成環境建置:
為你自己學Ruby on Rails:環境建置篇


咦?看倌您還在啊?正常人在看完上面那段不負責任的環境建置之後,
應該都會按下Cmd(Ctrl)+ W 或是 Cmd(Ctrl)+ Q 才是吧?

好吧...(沒有中招嗎?so sad...)

根據某位授課講師的說法,要掌握一門程式語言要從下列幾東西開始:

  • 變數
  • 三種基本型別: String, Integer and Boolean
  • 兩種集合型別: Array and Hash
  • 函式
  • 分支條件與迴圈
  • 變數作用域

所以,就先從變數(Variables)和常數(Constants)開始吧!


變數(Variables)

Ruby 中的變數共有以下四種:

type sample identifier
區域變數 name 非大寫字母開頭
全域區域 $name $開頭
實體變數 @name @開頭
類別變數 @@name @@開頭

只有 全域變數 和 實體變數 有預設值 nil。

puts $name
=> nil
puts @name
=> nil
puts name
=> (undefined local variable or method `name` for main:Object)
puts @@name
=> (uninitialized class variable @@name in Object)

常數(Constants)

Ruby對常數的要求只有一點:

常數的命名開頭要是英文字母大寫。

下面的例子裡,就有兩個常數 Foo 和 Bar。
沒錯,常見的類別(class)名稱,必須要是常數才行喔!

class Foo
    Bar
end


虛擬變數(pseudo_variable)

常用的虛擬變數有

  • self : 呼叫方法的物件(The receiver object of the current method.)
  • nil : 代表還沒有被設定值 (Undefined)
  • true : 代表 True
  • false : 代表 False

虛擬變數算是比較特別的一群:
他們通常被當作像區域變數那樣來使用,但是無法被assign任何值。

 self = 'hahaha'
 => SyntaxError (Can't change the value of self)
 nil = 18
 => SyntaxError (Can't assign to nil)
 true = false
 => SyntaxError (Can't assign to true)

同場加映:

在練習Ruby的時候,通常我們會習慣用 p 和 puts 把結果印出來,像是下面這樣:

  • 印出字串
p 'this is a string'
"this is a string"
=> "this is a string"

puts 'this is a string'
this is a string
=> nil
  • 印出整數
 p 123
123
=> 123

puts 123
123
=> nil
  • 印出Boolean
p true
true
=> true

puts false
false
=> nil
  • 試著印出 nil
p nil
nil
=> nil
puts nil
   #是真的沒有東西,不是沒有打字喔!
=> nil

p 和 puts 都能幫我們印出結果,但是印出的內容不太一樣喔!
這個符號 =>,在 Ruby是叫做 “回傳值” 的概念,暫時先有印象就好。
目前只需要知道:

  • p 可以幫我們印出物件(object)本身,並回傳物件本身的值(value)
  • puts 則是會把物件轉換成字串印出來。
    就算是nil 也會被轉成空的字串“”,所以才會印出空白喔。

其實還有一個print,不過因為對他沒有愛,就這樣吧!

如果想進一步了解的話,可以參考下面連結:

為你自己學 Ruby on Rails: 變數、常數、流程控制、迴圈
Ruby p vs puts vs print
Understanding The Differences Between Puts, Print & P

鐵人賽第一天,就先這樣囉!


下一篇
Ruby and Rails 的二三事 - Day02 流程控制、迴圈與迭代
系列文
Ruby and Rails 的二三事19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言