2015-11-10 30 views
8

Tôi đã sử dụng hàm map trong Swift để lặp lại trên một loạt các bản xem trước và xóa chúng khỏi một người giám sát.Dấu gạch dưới này có ý nghĩa gì trong Swift?

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

Khi tôi nâng cấp từ Swift 1.x lên 2.0, Xcode đã cảnh báo rằng giá trị trả về từ bản đồ không được sử dụng. Vì vậy, tôi giao nó với let x = ... và tôi nhận được một cảnh báo:

enter image description here

Vì vậy, tôi để cho Xcode sửa chữa các cảnh báo đối với tôi, và nó đã cho tôi điều này:

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

ý nghĩa là gì của dấu gạch dưới khi không ở trong ngữ cảnh của tham số phương thức? Nó có nghĩa là gì?

Edit:

Tôi biết rằng khi một tham số phương pháp là vô danh, dấu gạch dưới diễn ra của họ. Tôi đang nói về một dấu gạch dưới ở giữa một phương pháp. Nó không phải là một phần của một thông điệp.

+1

Câu hỏi này được trả lời tại đây. http://stackoverflow.com/questions/30876068/what-is-in-swift-telling-me Và tại đây http://stackoverflow.com/questions/24437388/whats-the-underscore-representative-of-in-swift -references –

+0

Mỗi câu hỏi khác về dấu gạch dưới trong Swift thảo luận về trường hợp của tên phương thức, trong đó dấu gạch dưới loại bỏ sự cần thiết của tên tham số bên trong và bên ngoài. Tôi thấy dấu gạch dưới ở giữa phương thức. Theo ngữ cảnh, một sự khác biệt lớn. – Moshe

+0

Bản sao có thể có của [Dấu gạch dưới có ý nghĩa gì trong trường hợp này?] (Http://stackoverflow.com/questions/32656095/what-does-the-underscore-mean-in-this-case) – Moritz

Trả lời

6

Dấu gạch dưới biểu thị thực tế là bạn cần đặt biến, nhưng bạn không định sử dụng biến trong tương lai. Thay vì cho nó một cái tên phức tạp, dấu gạch dưới sẽ đơn giản hơn và ít lộn xộn hơn, đặc biệt trong trường hợp tên biến không quan trọng. (vì bạn không sử dụng lại.)

+0

Nhắc một chút về Python bằng cách này ... –

+0

Python sẽ không quan tâm rằng bạn không sử dụng giá trị trả lại và chỉ cho phép bạn chạy hàm mà không gán nó cho một biến nào cả. –

+0

Tôi có hiểu chính xác rằng điều này (gán giá trị từ bên phải sang biến số dưới) chỉ được thực hiện để ẩn cảnh báo biên dịch không? – Pavel

3

Thông số có tên địa phương là dấu gạch dưới bị bỏ qua. Người gọi phải cung cấp một đối số, nhưng nó không có tên trong cơ thể hàm và không thể được gọi ở đó. Về cơ bản nó là một trình giữ chỗ tham số mà bạn sẽ không sử dụng cho bất cứ thứ gì trong cơ thể.

-1

Nếu tôi không nhầm điều này được chuyển từ Mục tiêu-C. Khi bạn không "sử dụng" con trỏ của bạn ở tất cả trong ứng dụng, bạn sẽ nhận được một cảnh báo. Trong Swift 2 tôi tin rằng họ đã cố gắng thực hiện một cái gì đó tương tự.

Các vấn đề liên quan