为了用图形化方式描述许多开发人员在Swift上的简单指令所面对的问题, 我们将分析以下代码, 你将需要猜测输出:
print(1)
print(2)
print(3)
作为根本不与Swift语言有任何联系的开发人员, 可能会简单地认为print函数等效于echo函数(来自PHP)或printf函数(来自C语言), 因此猜测的输出应为:
123
但是, Swift不遵守规则, 因为他是个坏蛋, 会按照自己的意愿去做, 而是会打印:
1
2
3
在本文中, 我们将简要解释为什么会发生这种情况以及如何在你的代码中防止这种行为。
在同一行上打印内容
从Swift 3开始, print方法的文档如下:
public func print<Target>(_ items: Any..., separator: String = default, terminator: String = default, to output: inout Target) where Target : TextOutputStream
默认情况下, 每次使用该功能时, 打印功能都会在一行上将给定项目的文本表示写到标准输出中。可以很容易地覆盖此行为, 将终止符参数定义为空字符串:
不是那个终结符, 而是终结符:print方法的String参数。例如, 要固定初始示例的预期输出, 我们可以将参数更改为空字符串:
print(1, terminator:"")
print(2, terminator:"")
print(3, terminator:"")
并且我们的代码输出将(如任何开发人员所期望的那样):
123
编码愉快!