美文网首页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

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

相关文章

  • LeakCanary内存泄露检测工具报错 Dumping mem

    报错信息:Dumping memory, app will freeze. Brrr 点击查看leaks小黄标,看...

  • mysqldump快速上手

    简介 功能: 转储MySQL数据库以及表的结构和内容。(Dumping structure and content...

  • be myself day24

    SENTENCE 八十二 1.dumping ground垃圾场 2.deal=accord 协议 3.abdic...

  • 汤圆

    早餐做了醪糟鸡蛋汤圆 宝爸:汤圆用英语怎么说? 宝妈:好像是sweet dumping. 宝宝:我觉得应该是sou...

网友评论

    本文标题:Swift-Printing and Dumping

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