Другие ответили на вопрос о синтаксисе внешних имен для параметров в Swift 2, поэтому я не буду повторять это здесь.
Но я бы посоветовал вам рассмотреть имя метода при названии параметров. Допустим, у вас был какой-то метод внутри вашего класса ячеек, где вы обновляли ярлык и изображение.Тогда метод может быть определен как
update(label label: String, image: UIImage) { ... }
Тогда вы назвали бы это как
update(label: "foo", image: barImage)
Но Swift 2, это как правило, рекомендуется включать идентифицирующую информацию в самом названии метода, например,
updateLabel(label: String, image: UIImage) { ... }
, и тогда вы бы назвали это как
updateLabel("foo", image: barImage)
Ключевое наблюдение в названиях методов является то, что последнее существительное в имени метода часто ссылается на первый параметр (и, таким образом, почему мы вообще не» t введите имя внешнего параметра для первого параметра). Но если это последнее существительное в имени метода не ссылается на первый параметр, вы можете указать внешнее имя для этого параметра.
Стоит отметить, что приведенное выше описание относится только к Swift до версии Swift 3, где они определили именование параметров (например, если имя первого параметра включается в имя метода, и, как правило, нет метка на первом параметре), чтобы отразить API Objective-C, распространенный в Cocoa в то время. В Swift 3 это соглашение изменилось.
В Swift 3, они явно свидетельствуют о том, что имя метода не включать имя первого параметра, так что вы бы определить выше, чтобы быть:
func update(label: String, image: UIImage) { ... }
Но, кроме того, когда вы называете это Swift 3 функции, вы бы поставить метку первого параметра (даже несмотря на явный внешний ярлык не был включен в оригинальной декларации):
update(label: "Foo", image: someImage)
Если вам нужно картина Swift 2 для подавления первого (или какой-либо параметр), в Swift 3 вы можете сделать это с _
:
updateLabel(_ label: "Foo", image: someImage)
Но, в то время как вы можете подавить параметр (с _
в Swift 3), это как правило, не посоветовал сделать это, если нет других убедительных оснований для этого.
Это имя внешнего параметра, оно используется для более четкого определения параметров. Когда вы вызовете эту функцию, вам нужно будет указать имя первого параметра. например 'someFunc (label: myLabel, image: myImage)' – awph
@awph Спасибо за ответ! Я прав, если бы функция была бы похожа на 'func someFunc (label: String, image: UIImage) {}', тогда вызов будет похож на 'someFunc (myLabel, image: myImage)'? – pulp
Кстати, вы можете использовать его и по другим параметрам, чтобы быть более четкими. например 'func someFunc (с меткойMyLabel: String, andImage image: UIImage) {}', и вызов будет 'someFunc (withMyLabel: myLabel, andImage: myImage)' – awph