// *** before: ***
// a function was allowed only one variadic parameter, so the rest of the
// lists were passed as arrays
func sendOld(to: [String], cc: [String], subject: String) { }
sendOld(to: ["alina@example.com"], cc: ["bob@example.com"], subject: "hi")
// *** in version 5.4: ***
func send(to: String..., cc: String..., subject: String) {
print(to, cc, subject)
}
send(to: "alina@example.com", "ann@example.com",
cc: "bob@example.com",
subject: "hi")
// only the first variadic may be unlabelled; every following one needs a
// label, otherwise the compiler could not tell where one list ends
func log(_ values: Int..., tags: String...) { }
log(1, 2, 3, tags: "a", "b")