2014-06-17 23 views
16

tôi thấy một số mã viết bằng Swift trên github,"_" và "in" có nghĩa là gì trong ngôn ngữ lập trình Swift?

Và nhận được một chút nhầm lẫn về dòng này

var done: (NSError?, NSData, NSString?) ->() = { (_, _, _) ->() in } 

bạn có thể vui lòng giải thích ý nghĩa thực sự của dòng này? Cảm ơn nhiều!

+0

dòng có 'in' chỉ định chữ ký đóng. Nó cho phép bạn đặt tên cho các tham số đầu vào và cũng xác định kiểu trả về đầu ra – Jack

Trả lời

13

_ có nghĩa là không đặt tên cho điều đó. Nó có thể được sử dụng ở một số nơi. Trong trường hợp của bạn, nó là nói rằng bỏ qua biến được chuyển vào đóng cửa. Mã bạn đưa ra là bỏ qua tất cả các tham số nhưng bạn cũng có thể bỏ qua một số tham số.

in là bắt đầu thực hiện đóng. Trong mã ví dụ của bạn, việc thực hiện đóng cửa trống.

Nhìn chung, dòng đó được xác định một đóng cửa gọi là "thực hiện" mà phải mất một NSError Tùy chọn (NSError?), NSData (NSData), và bắt buộc NSString (NSString?) và trả về không có gì (->()). Việc thực hiện thực tế của việc đóng cửa không có gì.

+1

Mở rộng câu trả lời của @ drewag một chút: "Thực thi thực sự hoàn toàn không có gì" ... bởi vì việc đóng được cung cấp như một giá trị mặc định cho thuộc tính 'done' và người dùng của lớp 'Request' này dự kiến ​​sẽ cung cấp một sự đóng cửa thực sự làm điều gì đó. Trong kết thúc đó, bạn sẽ cung cấp tên địa phương cho các tham số thay vì sử dụng '_' (như đã thấy trên dòng 55 hiện tại trong gist). – rickster

+0

@rickster Cảm ơn tất cả các câu trả lời hấp dẫn của bạn! Tôi có một câu hỏi khác về mã này trong gist. Khi nào chức năng "kết nối" được gọi? Tôi thấy rằng có ba chức năng chia sẻ cùng một tên "kết nối", nhưng tôi không thể tìm thấy nơi mà các chức năng này được gọi là. Cảm ơn bạn! – Ev3rlasting

+0

@ Ev3rlasting Đó là những cuộc gọi lại của đại biểu từ NSURLConnection. Bạn sẽ nhận thấy rằng khi tạo NSURLConnection trên dòng 21, mã sẽ chuyển 'self' làm đại biểu. – drewag

12

_ là tên thông số trình giữ chỗ. Nó chỉ ra rằng một tham số được mong đợi, nhưng sẽ không được sử dụng. in cho biết phần cuối của chữ ký loại đóng. Toàn bộ dòng này định nghĩa một hàm nhận ba tham số và không làm gì cả.

0

"_" được sử dụng để làm cho một số điều ẩn danh.

for (key, _) in dictionary{} 

Ở đây chúng tôi đặt giá trị là ẩn danh.

Trong được sử dụng để bắt đầu đóng hoặc lặp lại cũng như chúng tôi chỉ định cho bộ sưu tập trên vòng lặp nào được áp dụng.

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