2015-02-06 18 views
5

Tôi đang làm việc thông qua các ví dụ trong Lập trình chức năng của Runar và Paul trong Scala cuốn sách, và tôi đã đi qua việc thực hiện sau của hàm lift trong phần 4.3.2:Ý nghĩa của dấu gạch dưới trong thang máy [A, B] (f: A => B): Tùy chọn [A] => Option [B] = _ map f

def lift[A,B](f: A => B): Option[A] => Option[B] = _ map f

tôi hiểu mục đích của chức năng, nhưng tôi không hiểu việc thực hiện vì Tôi không hiểu những gì gạch dưới đại diện cho. Tôi đã xem xét nhiều chủ đề khác về vô số ý nghĩa của gạch dưới trong Scala, và trong khi tôi chắc chắn rằng những chủ đề phải đề cập đến loại trường hợp sử dụng, tôi phải đã bỏ lỡ nó.

Trả lời

12

Dấu gạch dưới ở đây là viết tắt của hàm. Trình biên dịch là đủ thông minh để suy luận, dựa trên kiểu trả về của phương pháp chữ ký, rằng những gì là có nghĩa là là:

def lift[A,B](f: A => B): Option[A] => Option[B] = (_: Option[A]).map(f) 

đó lần lượt mở rộng để:

def lift[A,B](f: A => B): Option[A] => Option[B] = (o: Option[A]) => o.map(f) 
10

Bạn có thể muốn có một xem this answer. _ map fsyntactic sugar cho x => x map f, dấu gạch dưới là trình giữ chỗ cho đối số cho hàm ẩn danh.

+0

Cảm ơn. Tôi sẽ upvote, nhưng danh tiếng của tôi là quá thấp. Tôi thực sự cần câu trả lời của bạn (và liên kết bạn đã đăng) cho ý tưởng rằng _ đại diện cho các tham số vị trí trong một hàm ẩn danh để chìm hoàn toàn. – liminalisht

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