2012-04-21 23 views
2

irb如何決定如何表示從語句中返回的對象?什麼決定了irb返回/顯示的內容?

 
> "foo" 
=> "foo" 
> 2 
=> 2 

我還以爲是print object.inspect相當於或一些這樣的事情,但沒有我嘗試返回相同的輸出。

+3

在你的兩個例子中調用'inspect'產生給定的輸出。也許提供一個不正確的例子嗎? – 2012-04-21 02:23:45

+1

它只是打印obj.inspect其中obj是以前的表達式的返回值 – texasbruce 2012-04-21 05:01:56

+0

嗯......你是對的。當我問到我在pry的上下文中使用「HTTParty :: Response」進行試驗時,它使用了pretty_inspect。我找不到'HTTParty :: Response'定義的pretty_inspect在哪裏......這可能會解決我的困惑。 – 2012-04-22 00:36:05

回答

4

那麼,irb實現了REPL。它幾乎在幕後:

loop do 
    '> '.display 
    input = gets.chomp 
    value = eval input 
    puts " => #{value.inspect}" 
end