Z tego co wiem, funkcje Swift mają domyślnie nienazwane parametry, ale metody Swift nie (z wyjątkiem pierwszego parametru). Na przykład, biorąc pod uwagę następujące definicje:Wiele nienazwanych parametrów w metodach Swift
func foo(a: Int, b: Int) -> Int {
return a + b
}
class MyClass {
func bar(a: Int, b: Int) -> Int {
return a + b
}
}
Muszę zadzwonić foo
z nienazwanych parametrów:
foo(10, 20) // fine
foo(a: 10, 20) // error
foo(10, b: 20) // error
foo(a: 10, b: 20) // error
i muszę zadzwonić bar
z pierwszym argumentem nienazwanego i drugi argument o nazwie:
MyClass().bar(10, b: 20) // fine
MyClass().bar(10, 20) // error
MyClass().bar(a: 10, b: 20) // error
MyClass().bar(a: 10, 20) // error
Rozumiem, że mogę wprowadzić dowolny nienazwany parametr o nazwie przy użyciu symbolu #
, ale moje pytanie brzmi: Czy jest jakiś sposób, aby uczynić nienazwane obie argumenty na bar
?
Innymi słowy, Chciałbym zadeklarować bar
w taki sposób, że mogę nazwać go jak zwykła funkcja:
MyClass().bar(10, 20)
Jest to możliwe w Swift? Jeśli tak to jak?
Dziękujemy! Właśnie tego potrzebowałem. – SelectricSimian
Uwaga: W Swift 4, musisz wstawić "_" również przed pierwszym argumentem. klasy MojaKlasa { pasek func (a: INT _ B: INT) -> int { powrotu a + b } } var g = MojaKlasa() g.bar (3, 4) błąd praca ręczna .swift: 88: 7: error: brak etykiety argumentu "a" w wywołaniu –