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

use*_*037 2 elixir phoenix-framework

我有一个动作:

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

  Logger.info("test: params #{IO.inspect(params)};\r\n\r\n")
Run Code Online (Sandbox Code Playgroud)

这将导致异常:

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

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

Dog*_*ert 5

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

"test: params #{params};\r\n\r\n"
Run Code Online (Sandbox Code Playgroud)

您需要的是Kernel.inspect或简单地是inspect

Logger.info("test: params #{inspect(params)};\r\n\r\n")
Run Code Online (Sandbox Code Playgroud)