爲什麼這個Ruby對象似乎做同樣的事情的to_s
和inspect
方法?爲什麼這個Ruby對象同時擁有to_s和檢查似乎做同樣事情的方法?
p
方法調用inspect
和放置/打印調用to_s
代表對象。
如果我運行
class Graph
def initialize
@nodeArray = Array.new
@wireArray = Array.new
end
def to_s # called with print/puts
"Graph : #{@nodeArray.size}"
end
def inspect # called with p
"G"
end
end
if __FILE__ == $0
gr = Graph.new
p gr
print gr
puts gr
end
我得到
G
Graph : 0
Graph : 0
- 那麼,爲什麼紅寶石有兩個功能做同樣的事情?
to_s
和inspect
有何區別? puts
,print
和p
有什麼區別?
如果我註釋掉to_s
或inspect
函數,我會得到如下結果。
#<Graph:0x100124b88>
#<Graph:0x100124b88>
我可能做錯了什麼,但對我來說在IRB中輸出是一樣的:''[1,2,3]''。另一方面,'nil.to_s'和'nil.inspect'分別產生''''''和'「nil」'。 – BreakPhreak 2011-06-02 11:39:01
同樣在這裏,to_s和檢查返回相同的輸出(截至2013年3月) – aug2uag 2013-03-10 05:35:56
'[1,2,3] .to_s =>「123」'; '[1,2,3] .inspect =>「[1,2,3]」'。 ''#{...}「'使用前者; 'p ...'使用後者。 – cdunn2001 2013-05-12 21:07:29