2017-06-20 11 views

回答

4

添加到以前的答案,IO.inspect可以打印任意靈藥來看,隨着含label:和值初始化Inspect.Opts結構可選關鍵字列表:

@spec inspect(item, Keyword.t) :: item when item: var 

IO.puts需要的參數是一個字符串,或實現String.Chars協議一個結構:

@spec puts(device, chardata | String.Chars.t) :: :ok 
+0

「任意酏劑術語」 - 不是任意的,只有那些誰執行['Inspect.Algebra'](H載荷大小://github.com/elixir-lang/elixir/blob/v1.4.4/lib/elixir/lib/io.ex#L293)。 – mudasobwa

+0

'Inspect.Algebra'只是一個使用'Inspect'協議的模塊。 Inspect協議似乎是針對所有內置類型和結構的通用實現實現的(https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/inspect.ex) –

+0

的確,相反,是的。 – mudasobwa

3

通過Elixir文檔閱讀,它看起來像IO.puts/2只是要編寫並追加一個換行符。

IO.inspect/2會做同樣的事情,但它也返回第一個值不變(因此它是可鏈接的),啓用漂亮的打印/裝飾和其他格式選項。

友情提醒hexdocs可真真棒。我能夠輕鬆找到問題的答案,並親自了解這些差異。我強烈建議您閱讀通常使用的模塊,以發現您可能不知道的其他可能從中受益的功能。

相關問題