Имена используются для выяснения причины каждого.
В swift параметры могут быть анонимными, и вы можете использовать их порядковый номер, чтобы использовать их. Вы обычно видите их в замыканиях и в Swift, функции являются замыканиями .
Так что порядок важен, а название - для уточнения.
Представьте себе функцию sorted
на[Int]
:
[1, 2].sorted(by: <#(Int, Int) throws -> Bool#>)
как узнать, какой из этих двух аргументов должен быть справа или слева от оператора <
? Порядок их!
Ради самодокументированного кода Вы можете назвать их первыми и вторыми, чтобы предотвратить потерянное отслеживание их порядка внутри функции:
[1, 2].sorted { first, second -> Bool in
return first < second
}
Но, как вы знаете, вы могли бы избавиться от имен и просто использовать номер заказа:
[1, 2].sorted {
return $0 < $1
}
, как вы, возможно, знаете, это <
является инфиксной функцией в Swift вот так:
func <(lhs: Int, rhs: Int)->Bool { return lhs < rhs }
Таким образом, вы можете передать его имя всей функции в качестве аргумента sorted
:
[1, 2].sorted(by: <)
У его аргументов есть имена, но сколькораз вы их используете? Ноль! Так как же компилятор знает, какой использовать при передаче?
сигнатура функции!
тип аргументов, их порядок и тип (типы) возвращаемых значений функции