iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0

寫在前面

雖然寫鐵人賽文章很有趣很有挑戰性,但是常常很多時候都寫得有點怕怕的,怕真實的狀況跟自己寫的不太一樣,誤人子弟之外還自曝其短,所以拜託如果有大大們剛好路過又發現"你XX到底在寫什麼東西"的時候麻煩高抬貴手留言跟我說說。寫這種文章神奇的就是寫完整天都會想之後要寫什麼、要怎麼接才不會怪、有什麼東西是之前忘了講的。希望我可以繼續撐下去呀!

測試語法或執行 Ruby 程式

我最常使用的方式是:

  1. irb
    在測試一些 ruby 語法上的特性或使用方法的時候會快速地進入 irb(interactive ruby)模式試試看。可以直接在你的終端機(Terminal)(如果是 Mac 的話通常會用 iTerm2,Windows 通常是用 Ubuntu)直接輸入 irb 就會進入"互動紅寶石"模式 (這樣聽起來比較高級),接著就可以看看某些方法或資料型別的運算是否跟你想的是一樣的。
# 有井字號在前面是表示註解的意思,程式執行時不會執行這行
# 例如你想看一下數字 1 跟字串 1 是不是一樣的可以這麼做
# Step 1
$ irb
# (這時候通常終端機的輸入文字開頭標示會從 $ 變成 > 但是如果你有自己改設定的話就以自己的設定為主)
# 可以稍微用 > 來分辨自己是不是處於"互動紅寶石"模式
# Step 2
> 1 == "1"    # 還記得嗎?要用兩個等號喔
=> false     # 這個是回傳值,如果直接執行程式或檔案是不會看到的,但是 irb 底下他會顯示給你看

> exit    # 這樣就可以離開 irb 模式
  1. 直接執行 rb 檔
    在終端機裡執行 ruby (檔案位置)
    如果你有正確地安裝 ruby 的話,可以用終端機執行,方法大致分兩種
    • 絕對路徑:直接用 ruby (檔案絕對路徑) 執行
    • 相對路徑:根據所在位置調整檔案相對路徑(可以進入檔案的資料夾(這又是另一篇文章了...)直接在終端機上輸入 ruby 加上檔名 + 副檔名(.rb) )
# 假設你在 c 槽底下的 how_are_you 資料夾裡放了一個叫 good.rb 的檔案,而你目前終端機位於 c 槽裡

# 檔案位在 c/how_are_you/good.rb
$ pwd    # 這個指令用來確認目前所在位置
/c/    # 顯示你目前位在 c 槽

# 絕對路徑執行 rb 檔
$ ruby /c/how_are_you/good.rb

# 相對路徑執行 rb 檔
$ ruby how_are_you/good.rb
# 或是
$ cd how_are_you
$ ruby good.rb

# 注意最前面的斜線

印個 Hello, World

因為我懶惰沒有寫關於環境設定的文章 (因為有點麻煩、像是我用 Windows 還要多解釋 Ubuntu...之類的東西) ,很開心地直接開始寫了運算子啦~變數啦~這種我覺得比較有趣的地方,所以就一起忘了學習每個程式語言一開始都會做的一件事(可能是看到有東西跑出來可以莫名其妙地增加你的成就感?覺得噢天啊我就這麼學會寫程式了呢!)。

所謂的"印出來"指的是讓人類們可以看到程式裡再發生什麼事,在跑程式的時候用了印出就會在主控台(console)裡面印出你要看的東西,當我們在做除錯(除蟲 debug)的時候,可能會需要使用這個方法來快速確認程式執行的方式是否跟你所想的是一樣的。
有一種很像的東西叫做"回傳值 return",但它比較像是程式要跟其他程式溝通的時候使用的東西,普通時候是不會在console 裡顯示出來的唷。
附帶一提,如果是在 irb 裡面去執行的話,他會幫你顯示出"回傳值",所以有時我們也會用這個來確認語法問題。

在 ruby 裡印東西有三種方法

  1. puts
    用這個方法印東西會呼叫 to_s 方法,印出東西之後回傳 nil,然後印一個東西會幫你換一行(幫你加個 <br>
  2. print
    用這個方法印東西會呼叫 to_s 方法,印出東西之後回傳 nil,但是"不會"幫你換行
  3. p
    用這個方法印東西"不會"呼叫 to_s 方法,所以可以看到你想要顯示的資料的原始狀態/原始資料型別,印出東西之後回傳"本來會回傳的東西"
> puts "1"
1
 => nil
# 回傳 nil, 會換行

> print "1"
1 => nil
# 回傳 nil, 不會換行

> p "1"
"1"
 => "1"
# 回完本來要回傳的東西並顯示原始資料型別

# 如果是陣列跟 nil 的組合
> puts [1, 2, nil]
1
2
           # 這邊 nil 就不會印出任何東西
 => nil
 
> print [1, 2, nil]
[1, 2, nil] => nil

> p [1, 2, nil]
[1, 2, nil]
 => [1, 2, nil]

# 試著印出 nil 的話
> puts nil

 => nil
 
> print nil
 => nil
 
> p nil
nil
 => nil

寫在後面

希望我寫完這篇不要把大家變得更困惑才好XD 本來想寫的其實是 Ruby 的方法(Method),但是發現如果不先寫這些東西直接解釋"方法"的話可能會讓頭腦攪在一起(很像寫完這篇也會讓頭腦攪在一起XD),但我還是覺得要先講一下這邊的東西在解釋"方法"的時候會讓你有種"挖怎麼東西都串在一起的感覺"呢! (不要自說自話)

好的,這篇跟我預想的完全不一樣,也超級基礎,希望我的理解是對的,不然就糗了...


上一篇
Day 4 Ruby 變數與資料型別 Variable and Data Type
下一篇
Day 6 中場休息。轉職路上的徬徨
系列文
從 Ruby 到 Rails,從素人到轉職6
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言