zoukankan      html  css  js  c++  java
  • E3.IO.inspect万金油调试利器

    IO.inspect/2可以把调试信息直接打印到控制台上,简单易用,是不可或缺的调试好帮手。

    基本使用

    它可以打印任何的数据类型,并且可以定制protocol来打印自定义的数据。

    E3_0

    对比IO.puts,它能直接打印的数据类型就少得多了,比如:基本的数据类型,原子,字符串,IODataIO.puts返回值为ok

    E3_2

    所以IO.inspect调试时能随意打印任何数据结构是多么的棒!

    使用Label选项

    最棒的是此函数可以保持返回值就是输入,这可以在代码的任何地方加入它,且不影响原有代码逻辑。比如:

    E3_3
    1. IO.inspect 可以加入label选项,他会直接把label对应内容打印在最前面。
    2. 使用String.split/3正则分割字符串。

    使用Limit选项

    限制打印的长度,允许输入0-N,或者:infinity

    E3_5

    Kernel.inspect/2

    还有一个与IO.inspect非常相似的函数,它就是Kernel.inspect/2, 这个函数不会把数据打到控制台上,它只是把参数stringify化,比如:
    E3_4

    iex> inspect(:foo)
        ":foo"
    iex> inspect([1, 2, 3, 4, 5], limit: 3)
        "[1, 2, 3, ...]"
    iex> inspect([1, 2, 3], pretty: true,  0)
        "[1,
     2,
     3]"
    iex> inspect("olá" <> <<0>>)
        "<<111, 108, 195, 161, 0>>"
    iex> inspect("olá" <> <<0>>, binaries: :as_strings)
        ""olá\0""
    iex> inspect("olá", binaries: :as_binaries)
        "<<111, 108, 195, 161>>"
    iex> inspect('bar')
        "'bar'"
    iex> inspect([0 | 'bar'])
        "[0, 98, 97, 114]"
    iex> inspect(100, base: :octal)
        "0o144"
    iex> inspect(100, base: :hex)
        "0x64"
    
    写下来是好习惯: Notes
  • 相关阅读:
    Hadoop源代码分析
    Java中如何把两个数组合并为一个
    数据库死锁的解决办法
    Java程序中解决数据库超时与死锁
    mysql 死锁检查
    JDBC事务和数据库事务嵌套的讨论 .
    嵌套事务和事务保存点的错误处理
    java string常见操作题
    java基本数据类型包装类
    java string
  • 原文地址:https://www.cnblogs.com/zhongwencool/p/e3_io_inspect1.html
Copyright © 2011-2022 走看看