Re: [問題] 請問 Fixnum 為什麼不支援 :next! 呢?

看板Ruby作者 (阿翔)時間10年前 (2014/05/30 00:27), 編輯推噓4(401)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《hcmlinj (接米)》之銘言: : 請教一下各位大大 : 為什麼 Fixnum 不支援 :next! 呢? : String 是有支援的 重點在於這個! 5.next 是會正常執行的。 看完Doc http://www.ruby-doc.org/core-2.1.2/Fixnum.html 就會發現Fixnum 沒有任何!結尾的method 因為 Fixnum 和 Bignum 是 immutable 的,而String 不是 換句話說就是物件一旦成立,物件的內容就不能夠修改。 為什麼要這樣呢? 考慮下面這個case x = 42 y = x x.next! 如果Fixnum 支援!這種修改內容的method 的話,最後y 的也會跟著改變,不太直覺。 : 以下是在 irb 的執行狀況 : irb(main):001:0> i = 0 : => 0 : irb(main):002:0> i.next! : NoMethodError: undefined method `next!' for 0:Fixnum : from (irb):2 : from /usr/bin/irb:12:in `<main>' : irb(main):003:0> i : => 0 : irb(main):004:0> i = "0" : => "0" : irb(main):005:0> i.next! : => "1" : irb(main):006:0> i : => "1" : irb(main):007:0> : 以上,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.11.157 ※ 文章網址: http://www.ptt.cc/bbs/Ruby/M.1401380837.A.C43.html

05/30 03:10, , 1F
立即值如Fixnum,true,false,nil沒有建構子
05/30 03:10, 1F

05/30 03:11, , 2F
這就是immutable的意思吧 會指向唯一物件
05/30 03:11, 2F

05/30 08:58, , 3F
原來如此,感謝^^
05/30 08:58, 3F

06/07 09:54, , 4F
所以說SYMBOL應該也不行囉?
06/07 09:54, 4F

06/08 20:58, , 5F
Symbol也是唯一的存在
06/08 20:58, 5F
文章代碼(AID): #1JXr_bn3 (Ruby)
文章代碼(AID): #1JXr_bn3 (Ruby)