2016-03-24 15 views
5

Ho cercato di:Come posso stampare un PID in elisir?

pid = spawn fn -> 1 + 2 end 
IO.puts(pid) 
IO.puts(IO.inspect(pid)) 

e sia dato un

** (Protocol.UndefinedError) protocol String.Chars not implemented for #PID<0.59.0> 

Ci deve essere un modo per ottenere il "#PID < 0.59.0>" rappresentazione del pid, dal momento che le stampe REPL quello #PID<0.59.0>.

risposta

7

Non c'è bisogno di avvolgere IO.inspect in una chiamata a IO.puts. Semplicemente chiamando IO.inspect farà quello che stai cercando.

pid = spawn fn -> 1 + 2 end 
IO.inspect(pid) 
5

Ho trovato che sto usando il inspect errato, c'è IO.inspect/2 e Kernel.inspect/2. Il secondo lavora per me:

pid = spawn fn -> 1 + 2 end 
IO.puts(inspect(pid)) 
+6

È possibile stampare qualsiasi cosa utilizzando 'inspect'. 'IO.inspect' è solo' IO.puts (Kernel.inspect (x)) ' –

+2

Quindi, semplicemente' IO.inspect (pid) 'funzionerebbe. – CoderDennis

-1

Basta utilizzare auto()

pid = self() IO.inspect(pid)