看板 Ruby 關於我們 聯絡資訊
※ 引述《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
AIGecko:立即值如Fixnum,true,false,nil沒有建構子 05/30 03:10
AIGecko:這就是immutable的意思吧 會指向唯一物件 05/30 03:11
hcmlinj:原來如此,感謝^^ 05/30 08:58
rexkimta:所以說SYMBOL應該也不行囉? 06/07 09:54
AIGecko:Symbol也是唯一的存在 06/08 20:58