Swift 函数中默认值的新语法

New syntax for default values in Swift functions

我刚刚注意到 Xcode (7.1) 的最新测试版更改了 Swiftprint 函数的签名。

新语法是:

public func print(items: Any..., separator: String = default, terminator: String = default)

有人知道这个 default 是什么东西吗?您如何指定默认值,而不仅仅是它有一个默认值?

默认separator是单行space,默认terminator是换行

要为其中任何一个使用不同的值,只需在调用函数时将所需值作为参数传递即可 - 例如:

print("first", "second", separator: "-", terminator: "...")
print("third")
// => "first-second...third"

函数签名中的default表示它有一个默认值,你不必传递参数。

func add(a: Int = 0, b: Int = 0) -> Int {
    return a + b
}

// "normal" function call
add(2, b: 4) // 6

// no specified parameters at all
add() // 0; both a and b default to 0

// one parameter specified
// a has no external name since it is the first parameter
add(3) // 3; b defaults to 0
// b has an external name since it is not the first parameter
add(b: 4) // 4; a defaults to 0

print 函数的情况下,separator 默认为 " "terminator"\n"

有4种调用方式:

struct SomeItem {}
print(SomeItem(), SomeItem())
print(SomeItem(), SomeItem(), separator: "_")
print(SomeItem(), SomeItem(), terminator: " :) \n")
print(SomeItem(), SomeItem(), separator: "_", terminator: " :) \n")

打印:

SomeItem() SomeItem()
SomeItem()_SomeItem()
SomeItem() SomeItem() :)
SomeItem()_SomeItem() :)