作者GoOdGaMe (GG)
看板Ruby
標題[問題] Ranges as Sequences 的一個小問題
時間Thu Mar 19 01:43:16 2009
在 Programming Ruby 2nd (p.63)
看到一個範例
class VU
include Comparable
attr :volume
def initialize(volume) # 0..9
@volume = volume
end
def inspect
'#' * @volume
end
def <=>(other)
self.volume <=> other.volume
end
def succ
raise(IndexError, "Volume too big") if @volume >= 9
VU.new(@volume.succ)
end
end
~~~~~~~
medium_volume = VU.new(4)..VU.new(7)
medium_volume.to_a → [####, #####, ######, #######]
medium_volume.include?(VU.new(3)) → false
想請問其中 inspect 這個方法和 to_a 之間的關係
因為medium_volume並沒有使用inspect,來接收inspect產生的訊息
但使用 to_a 還是能夠印出 inspect 所定義的格式
看了上下文,沒有這段的解釋,所以想請教大家 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.29.185
1F:→ godfat:你在 irb 裡吧? irb 會用 inspect 來印出字串 03/19 12:13
2F:推 godfat:對了,給個小建議,先貼描述,程式碼放最後面比較容易看 03/19 12:14
3F:→ GoOdGaMe:我在命令提示字元下切換路徑 以ruby file.rb 這樣執行 03/19 23:34
4F:→ GoOdGaMe:沒有在irb裡面耶 03/19 23:35
5F:→ godfat:那怎麼會有 IO 呢? 03/20 13:01
6F:→ GoOdGaMe:執行的結果 就直接秀在命令提示字元上 03/22 20:14
7F:→ GoOdGaMe:喔喔 因為這段程式碼是直接COPY書上的 書上沒有加 "p" 03/22 20:17
8F:→ GoOdGaMe:自己加了 才會顯示出結果 03/22 20:17
9F:→ GoOdGaMe:是不是 跟這個有關係呢? 03/22 20:18
10F:→ godfat:p 就是 call inspect, puts 是 call to_s 03/22 21:45
11F:→ GoOdGaMe:感謝版主解釋,又學到了一點 03/23 11:31