1
感謝您檢查此問題。這是我的第一個問題,所以任何幫助/批評都表示讚賞。我正在通過Ruby的免費在線版本(Pragmatic Programmer's Guide,version 1)工作。以下示例沒有(當我這樣做時)本書所說的應該是:Range.to_a在「Programming Ruby」中的示例
class VU
include Comparable
attr :volume
def initialize(volume) # 0..9
@volume = volume
end
def inspect
'#' * @volume
end
# Support for ranges
def <=>(other)
self.volume <=> other.volume
end
def succ
raise(IndexError, "Volume too big") if @volume >= 9
VU.new(@volume.succ)
end
end
應做到以下幾點,根據書,IRB:
medium = VU.new(4)..VU.new(7)
medium.to_a » [####, #####, ######, #######]
medium.include?(VU.new(3)) » false
但到底是什麼發生了我與VU的數組medium.to_a返回一個對象,像這樣:
#<VU:0x9648918>
#<VU:0x96488b4>
#<VU:0x964888c>
#<VU:0x9648878>
這對我來說很合理(我認爲)。對我來說沒有意義的是本書的斷言,即應該返回的是一系列'#'。那不是我們需要調用檢查方法,以便讓那些「#的?
謝謝! 伊恩
謝謝您的幫助。我撒謊了,這不是在IRB後所有我說,因爲我相信在irb和beh中運行它的行爲在解釋器中運行它作爲.rb腳本的avior(當時我解釋的單詞解釋器,所以我只是說irb)會是一樣的。我現在看到它的真相,我會在未來嘗試更具體。再次感謝。 – eeeeeean