分享

Ruby 裡使用 p 和puts的差異?

p 和 puts, 都是印出內容幹嘛使用兩種方法?
只有在irb 的執行介面下, 執行 puts “我很帥” 和 p “我知道”, 印出內容之外, 內容的結尾處畫面產生 =>nil 和 =>”我知道”
在Ruby裡面, 箭頭符號(=>)的中文名稱:回傳值; 英文:return
Ruby圈裡, Ruby人稱的字典 "Ruby Guide” 提到p 和puts差異: puts always returns nil, p returns the object you pass to it.
參考 https://www.rubyguides.com/2018/10/puts-vs-print/
((看到always, 小弟當下感動得緊. 聽多了沒有唯一(最好)的答案, 只有最適合的答案. 要在程式裡面找always怎麼這麼難, 離題了 — 拉回
這裡我們暫時不討論回傳值(return)
回到p 和 puts, 都是印出內容的方法, 幹嘛使用兩種方法? 換句話說, p 和 puts的差異?
我在書上看到以下的敘述:
p 方法可以完整印出型態跟結構
puts 方法印出內容物
國字和英文字母每個都看得懂, 怎麼這句子要表達的意思?
不懂的敘述圈起來 “型態”, “結構”, “內容物”
我試著把上面p 和puts 的方法, 用人話表示. 什麼是型態, 結構? 什麼又是內容物?
先說型態吧!什麼型態(又稱資料型別; Data type)?
我跟英文不熟, 不過這時候用英文來找資料, 方便許多!
Ruby的data type, 舉例表示如下(由左至右), 分別為
Numbers(數字), String(字串) 和Array(陣列)
123 , “123”, [1, 2, 3]
觀察上面這些數字+符號, 完全沒有符號的123, 被雙引號包起來的123, 和中括號包起來的123
疑! 我好像發現內容物是什麼了!
依照puts的方法, 執行puts時, 只會印出內容物
執行puts 前, 我猜 puts 123 , puts “123”, puts [1, 2, 3]執行結果如下:
123
123
123
Ruby puts p 差異 比大小
猜測puts [1, 2, 3]的結果和實際執行結果不同, 因為數字前面"空白”或”逗號”的關係嗎?
試試看puts [1,2,3] 和 puts [123]
看來Array的內容, 放置"內容物"的方法是以逗號區隔.
執行 puts [123] 的印出結果,才是123.
關門! 放英文出來! 陣列內的"內容物”又稱element, 每個element之間,使用逗號間隔.
[1, 2, 3]表示該陣列裡面的內容物(element)有3個, 分別是1 和 2和 3
(如上圖 黃框處)
接下來p的印出方法, 印出型態(data type) 和結構.
data type辨識方法:
完全沒有符號包裹的123, data type 是 Numbers
用雙引號包起123的”123", data type 是 String
中括號包起來, 再用逗號將123隔開的[1, 2, 3], data type 是Array
參考 https://www.rubyguides.com/2017/06/ruby-struct-and-openstruct/
執行p 前, 我猜p 123 , p “123” , p [1, 2, 3]
123
“123”
[1, 2, 3]
Ruby puts p 差異 比大小
根據我的嘗試心得, puts 用來印出訊息給使用者. p 用來印出訊息給程式設計者debug使用.
練習. 不知道怎麼比大小和 字串怎麼轉陣列的情況下, 印出最大值 和最小值
numbers = “1 2 3 4 5"
Ruby puts p 差異 比大小
上圖 b的data type 是字串, 不是陣列. ruby能用p b[0]和 puts b[0], 這結果, 我意想不到. 我就用這個結果偷吃步, 比大小.
剛進ruby的小菜雞 筆
#Ruby  #puts  #p  #差異  #比大小 
分類:日記

評論
下一篇
  • colon(冒號) 在ruby裡面的作用
  • 更多文章
    載入中... 沒有更多了