| Up until now we have used putsto print values out. As we move forward, we
 will find this is too limited to properly inspect some values. |  | 
| Where putsuses the string contents to produce output,poutputs a
 representation of the value. |  puts "this uses `puts`"
p "this uses `p`"
 | 
| Behind the scenes, putsuses theto_smethod to transform any object into
 a string. These two lines are equivalent. |  | 
| Interpolation also makes use of to_s, then embeds the resulting string. | puts "this number became a string: #{1}"
 | 
| We can now see a way to resolve the TypeErrorthat we’ve seen before. |  | 
| With pwe can disambiguate that the value is a string and not a number as
 the output may suggest. |  | 
| Behind the scenes, puses theinspectmethod to  transform any object into
 a representation. These two lines are equivalent. | p "this uses `p`"
puts "this uses `inspect`".inspect
 | 
| Another common ambiguous case is nil, which is stringified as an empty
  string. The ambiguity can be entirely silent! | puts "where is my `nil`? #{nil}"
puts "here it is! #{nil.inspect}"
 | 
| From here on, we’ll use pandinspectmuch more often to properly disambiguate. |  |