美文网首页selector
Swift-Printing and Dumping

Swift-Printing and Dumping

作者: 小驴拉磨 | 来源:发表于2019-03-27 17:12 被阅读0次

    你真的会使用Swift的print吗?
    学习一门语言一般咋们学习第一个句代码就是输出语句,Swift也是一样的,但是Swift的打印输出语句真的很强大。
    Swift中提供的打印输出语句:

    print(Any)
    

    print的方法原型是

    func print(_ items: Any..., separator: String = " ", terminator: String = "\n")
    参数:
    tems:要打印的项为零或多个。
    separator:要在每个项目之间分隔符。默认值是单个空格(" ")。
    terminator:打印完所有项目后要打印的字符串。默认值是换行符(\ n)。
    

    从上面的方法中可以看出separator和terminator都是可以更换的,使用实例:

    print("One two three four five")
    // Prints "One two three four five"
    print(1...5)
    // Prints "1...5"
    print(1.0, 2.0, 3.0, 4.0, 5.0)
    // Prints "1.0 2.0 3.0 4.0 5.0"
    

    要打印由空格以外的其他内容分隔的项目,请将字符串作为separator。

    print(1.0, 2.0, 3.0, 4.0, 5.0, separator: " ... ")
    // Prints "1.0 ... 2.0 ... 3.0 ... 4.0 ... 5.0"
    

    每个调用的输出默认包含换行符。要打印没有尾随换行符的项目,请将空字符串作为。print(_:separator:terminator:)terminator

    for n in 1...5 {
        print(n, terminator: "")
    }
    // Prints "12345"
    // 也可换成别的字符串,例如用逗号隔开
    for n in 1...5 {
        print(n, terminator: ",")
    }
    // Prints "1,2,3,4,5,"
    

    重头戏:Swift的print不止支持输出打印还可以写入到变量中,方法如下:

    print(_:separator:terminator:to:)
    // 方法原型
    func print<Target>(_ items: Any..., separator: String = " ", terminator: String= "\n", to output: inout Target) where Target : TextOutputStream
    

    output:用于接收每个项目的文本表示的输出流。
    TextOutputStream:是文本输出流协议
    使用实例:

    var range = "My range: "
    print(1...5, to: &range)
    // range == "My range: 1...5\n"
    
    var separated = ""
    print(1.0, 2.0, 3.0, 4.0, 5.0, separator: " ... ", to: &separated)
    // separated == "1.0 ... 2.0 ... 3.0 ... 4.0 ... 5.0\n"
    
    var numbers = ""
    for n in 1...5 {
        print(n, terminator: "", to: &numbers)
    }
    // numbers == "12345"
    

    类似调试输出还有几个:

    • debugPrint
      debugPrint:官方的解释是将最适合调试的给定项的文本表示写入标准输出。
      print的不同是:debugPrint添加了对调试类型信息等有用的附加信息。
    print(1...5)
    // Prints "1...5"
           
    debugPrint(1...5)
    // Prints "ClosedRange(1...5)"
    
    • dump
      dump:使用映射将给定对象的内容转储到标准输出。
      dump:能够经对象里的东西展开打印,也可以控制参数,来控制展示层数,尤其是在获取大批量数据的时候,全部打印太多,打印部分正好。
    let person = Person()
    person.name = "lidong"
    person.age = 14
    
    debugPrint(person)
    //<Swift_Dome.Person: 0x6000012fa310>
    print(person)
    //<Swift_Dome.Person: 0x6000012fa310>
    dump(person)
    //▿ <Swift_Dome.Person: 0x6000012fa310> #0
    //    - super: NSObject
    //    ▿ name: Optional("lidong")
    //    - some: "lidong"
    //    ▿ age: Optional(14)
    //    - some: 14
    
    

    全部参数的方法

    func dump<T>(_ value: T, name: String? = nil, indent:Int = 0, maxDepth: Int = .max, maxItems: Int = .max) -> T
    参数列表
    value:要输出到target流的值。
    name:写入内容时使用的标签value。当nil被传递,被省略的标签。默认是nil。
    indent:用作输出的每一行的缩进的空格数。默认是0。
    maxDepth:写入具有嵌套组件的值的内容时要下降的最大深度。默认是。Int.max
    maxItems:要写入完整内容的最大元素数。默认是。Int.max
    

    根据不同的场景使用不同的方式。参考

    相关文章

      网友评论

        本文标题:Swift-Printing and Dumping

        本文链接:https://www.haomeiwen.com/subject/ndsfbqtx.html