2015-11-10 18 views
8

Użyłem funkcji map w Swift do iteracji na kilka subviews i usuwania ich z superview.Co oznacza to podkreślenie w Swift?

Po aktualizacji ze Swift 1.x do 2.0 Xcode ostrzegł, że wartość zwracana z mapy nie była używana. Więc przypisane jej let x = ... i mam kolejne ostrzeżenie:

enter image description here

więc niech Xcode naprawić ostrzeżenie dla mnie, a on dał mi to:

_ = self.buttons.map { $0.removeFromSuperview() }

Jakie jest znaczenie podkreślenia , gdy nie jest to związane z parametrem metody? Co to znaczy?

Edit:

wiem, że gdy parametr metoda jest anonimowa, podkreślenia zajmuje ich miejsce. Mówię o podkreśleniu w środku metody. To nie jest część wiadomości.

+1

To pytanie odpowiedziało na to pytanie. http://stackoverflow.com/questions/30876068/what-is-in-swift-telling-me A tutaj http://stackoverflow.com/questions/24437388/whats-the-underscore-representative-of-in-swift -referencje –

+0

Każde inne pytanie dotyczące podkreślenia w Swift omawia przypadek nazwy metody, w której podkreślenie eliminuje potrzebę wewnętrznych i zewnętrznych nazw parametrów. Widzę podkreślenie w środku metody. Kontekstowo, duża różnica. – Moshe

+0

Możliwy duplikat [Co oznacza w tym przypadku podkreślenie?] (Http://stackoverflow.com/questions/32656095/what-does-the-underscore-mean-in-this-case) – Moritz

Odpowiedz

6

Podkreślenie oznacza, że ​​należy ustawić zmienną, ale nie planuje się używania tej zmiennej w przyszłości. Zamiast nadawać mu wyszukaną nazwę, podkreślenie będzie prostsze i mniej zaśmiecone, szczególnie w przypadku, gdy nazwa zmiennej nie ma znaczenia. (ponieważ nie używasz go ponownie.)

+0

Przypomina trochę Pythona nawiasem mówiąc ... –

+0

Python nie przejmowałby się tym, że nie używasz zwracanej wartości i po prostu pozwala uruchomić tę funkcję bez przypisywania jej do zmiennej. –

+0

Czy poprawnie rozumiem, że to (przypisywanie wartości z prawej strony do podkreślenia zmiennej) wykonywane tylko po to, aby ukryć ostrzeżenie kompilacji? – Pavel

3

Parametr, którego nazwa lokalna jest podkreślnikiem, jest ignorowany. Osoba wywołująca musi podać argument, ale nie ma nazwy w treści funkcji i nie może się do niej odwoływać. Jest to po prostu parametr zastępczy, którego nie użyjesz do niczego w ciele.

-1

Jeśli się nie mylę, przeniesiono to z Celu-C. Gdy w ogóle nie użyłeś wskaźnika w aplikacji, otrzymasz ostrzeżenie. W Swift 2 wierzę, że próbowali zaimplementować coś podobnego.