即使我使用“检查”,“协议String.Chars仍未实现”

时间:2018-06-27 12:40:44

标签: elixir phoenix-framework

我有一个动作:

def my_action(conn, params) do
  # ..............

  Logger.info("test: params #{IO.inspect(params)};\r\n\r\n")

这会导致异常:

  ** (Protocol.UndefinedError) protocol String.Chars not implemented for %{"key1" => "var1", "key2" => "var2", # ........}. 
      This protocol is implemented for: Atom, BitString.................

我理解这是什么意思,但我不明白为什么会导致它?我正在使用“检查”。我应该用什么来解决它?

1 个答案:

答案 0 :(得分:5)

IO.inspect打印该值,然后返回该值。除了打印值,它与写入相同

"test: params #{params};\r\n\r\n"

这里您需要的是Kernel.inspect或简单的inspect

Logger.info("test: params #{inspect(params)};\r\n\r\n")