2014-12-07 4 views
9

Насколько я могу судить, функции Swift по умолчанию имеют неназванные параметры, но методы Swift не исключают (исключая первый параметр). Например, учитывая следующие определения:Несколько неназванных параметров в методах Swift

func foo(a: Int, b: Int) -> Int { 
    return a + b 
} 

class MyClass { 
    func bar(a: Int, b: Int) -> Int { 
     return a + b 
    } 
} 

Я должен позвонить foo с неназванными параметрами:

foo(10, 20) // fine 

foo(a: 10, 20) // error 
foo(10, b: 20) // error 
foo(a: 10, b: 20) // error 

и я должен назвать bar с первым аргументом безымянного, а второй аргумент имени:

MyClass().bar(10, b: 20) // fine 

MyClass().bar(10, 20) // error 
MyClass().bar(a: 10, b: 20) // error 
MyClass().bar(a: 10, 20) // error 

Я понимаю, что могу указать любой неназванный параметр, названный с помощью символа #, но мой вопрос: Есть ли способ сделать оба аргумента bar неназванным?

Другими словами, я хотел бы объявить bar таким образом, что я могу назвать его как обычную функцию:

MyClass().bar(10, 20) 

Возможно ли это в Swift? Если да, то как?

ответ

17

Да, вы предварить второе имя параметра с _, чтобы он быть анонимным:

class MyClass { 
    func bar(a: Int, _ b: Int) -> Int { 
     return a + b 
    } 
} 
+0

Спасибо! Это то, что мне нужно. – SelectricSimian

+0

Примечание: В Swift 4 вы должны поставить '_' перед первым аргументом. класс MyClass { FUNC бар (а: Int _ B: Int) -> Int { возврата а + Ь }} вар г = МойКласс() g.bar (3, 4) ошибка: РЕПЛ .swift: 88: 7: ошибка: отсутствует метка «a» в вызове –

Смежные вопросы