2017-08-05 97 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