iT邦幫忙

2

Ruby基本介紹(三)-P與Puts方法的差異

今日K-pop推薦!

Yes


本篇文章會提到的事

預防針:如資訊有錯,歡迎指正分享,感謝您。

  • P與Puts差異
  • 上篇其他衍生問題回答

衍生問題回答

p 與 puts 差別? (突然覺得這一個問題,就應該可以一篇文章...)

回答問題前,先分享一些觀念。

  1. p 與 puts 都是一種方法,puts前面還有一個print方法,請先記得puts與print簡單差異在資料印出來的樣子不一樣,print為連續印出,puts會換行(如果資料內有換行符號),兩者都會回傳nil。以下圖做舉例。
2.7.3 :009 > print 1, 2, 3
123 => nil 
#123是print方法執行後顯示給你看的結果,nil是回傳值
2.7.3 :010 > puts 1, 2, 3
1
2
3
 => nil 
#1
#2
#3 是p方法執行後顯示給你看的結果
#一樣nil是回傳值

2.nil於ruby中代表的就是什麼都沒有(所以nil不是物件,因為nil就是什麼都沒有),之前提過陣列,陣列猶如一個長條形藥盒,一格是一個記憶體,如過陣列中間要空一格,就要輸入nil。如下

2.7.3 :032 > [1, nil, 3]
 => [1, nil, 3] 

就像是說,你有格記憶體裡沒有資料,但你還是要有那個記憶體顯示,所以出現nil。

3.回傳值,是回傳一個資料(物件)讓記憶體記憶(記憶不代表save),如果回傳nil給記憶體記憶,就是記下"什麼都沒有",而我們要將這格記憶體的"內容物"表現出來,就會出現"什麼都沒有"如下。

2.7.3 :037 > puts [1, nil, 3]
1

3
 => nil 
2.7.3 :038 > puts nil

 => nil 

另外一個小重點,執行任何方法都會有回傳值。

4.p則是列印資料的整個型態與架構,所以在執行p方法後,"什麼都沒有"會以nil出現,但p這個方法會有回傳值。如下

2.7.3 :057 > x = [1, nil ,3]
 => [1, nil, 3] 
2.7.3 :058 > p x
[1, nil, 3]
 => [1, nil, 3] 
2.7.3 :059 > p nil
nil
 => nil 
2.7.3 :060 > puts x
1

3
 => nil 
2.7.3 :062 > p 123
123
 => 123 

整理後:
p列印整個型態與架構,且具有回傳值。
puts列印內容物,如有換行符號會換行(回傳nil,但因為nil代表什麼都沒有),沒有回傳值。

&&與||符號

這兩個符號在判斷句"if"中常常使用,&&代表and,代表兩個條件都須符合才能成立。||代表or,代表兩個條件中有一樣成立即可進行判斷(成立)。

兩者可以可混合使用,初學較常見例子,判斷是否為閏年,如下

def leep_year?(year)
  year % 4 == 0 && year % 100 != 0 || year % 400 == 0
end
#能被4整除和不能被100整除,或可以被400整除。
#如果把&&跟||換位置,意思就不一樣了,&&前後兩個判斷句要一起看。

= 與 ==

= 在 ruby不是叫"等於",是宣告一個變數成為一個資料(物件, 實體)的一個方法,如果有較多其他語言接觸,用"指向"這個說法更能理解。所以 = 前面不會是實體, 會是一個變數。

2.7.3 :071 > 1 = 1
SyntaxError ((irb):71: syntax error, unexpected '=', expecting `end')
1 = 1
  ^

== 是一個判斷方法,判斷兩個資料(物件, 實體),是否完全相同。

2.7.3 :072 > x == 2
 => false 
2.7.3 :073 > 1 == 2
 => false 
2.7.3 :074 > x = 2 
 => 2 
2.7.3 :075 > x == 2
 => true 
2.7.3 :076 > 2 == x
 => true 

可以順便複習一下, = 與 == 這兩個方法, 都有回傳值。
== 常常只打 = 不可恥, 記得發現就好 XD

Ruby為強or弱型別?

強弱型別
Ruby是強型別。
我想表示,這題我只會這樣回答!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言