2017-08-05 71 views
2

沿名單我想用一個字符串標識符一起打印列表像藥劑:印刷用繩子

list = [1, 2, 3] 
IO.puts "list is ", list 

這是行不通的。我試圖像

# this prints only the list, not any strings 
IO.inspect list 
# using puts which also does not work 
IO.puts "list is #{list}" 

在JavaScript的一些變化,我可以簡單地做console.log("list is ", list)。我很困惑我如何在靈藥中達到同樣的效果。

回答

6

與靈藥1.4開始,IO.inspect/2接受label選項among others

IO.inspect list, label: "The list is" 
#⇒ The list is: [1, 2, 3] 
+0

+1 This is nice!我已經編寫了'IO.inspect'包裝器,它允許標籤,但只有在調試時多次返回檢查值。現在不需要這麼做!只要將'|> IO.inspect(label:「foo」)''扔進任何地方,就可以用標籤打印值,而不會影響原始代碼的行爲。 – Dogbert

1

也許有一個更好的方法(我是新來的藥劑也是如此),但這個工作對我來說:

IO.puts(["list is ", Enum.join(list, " ")])        
list is 1 2 3 

插空太:

IO.puts("list is #{Enum.join(list, " ")}") 

編輯:inspect似乎更好比這個使用案例的Enum.join

IO.puts("list is #{inspect(list)}") 
list is [1, 2, 3] 
+0

嗯...這似乎大量的代碼只是爲了打印的東西到控制檯,我們都經常做:) – palerdot

+0

@palerdot找到一個更好的辦法,更新了答案。 –

+2

爲了在調試時快速輸入,我經常對這樣的元組使用'IO.inspect':'IO.inspect {:list,list}'。這應該打印'{:list,[1,2,3]}'這足夠用於調試目的。 – Dogbert