tôi tạo ra như sau:Loại suy luận từ phải sang trái đoạn mã
class PimpToRight[A](f: A => Boolean) {
def <| (a: A) = f(a)
}
implicit def f2pimp[A](f: A => Boolean) = new PimpToRight(f)
class PimpToLeft[A](a: A) {
def <|: (f: A => Boolean) = f(a)
def |> (f: A => Boolean) = f(a)
}
implicit def a2pimp[A](a: A) = new PimpToLeft(a)
Có nhiều phương pháp phải và trái kết hợp sẵn. đang
Tiếp theo hoạt động:
((_: Int) > 3) <| 7
((_: Int) > 3) <|: 7
7 |> (_ > 3)
Nhưng điều này không:
(_ > 3) <| 7
(_ > 3) <|: 7
Có thể suy ra các tham số kiểu từ phải sang trái?
Tôi ngạc nhiên rằng có sự khác biệt giữa, '(_> 3) <|: 7' và' 7. \ '<|:\'(_ > 3)', nhưng thực sự chỉ biên dịch sau. Nếu bạn không nhận được câu trả lời ở đây, có thể yêu cầu trên danh sách gửi thư hoặc kiểm tra trình theo dõi lỗi? –
@Kipton lưu ý rằng bạn có thể bỏ qua các dấu tích sau nếu bạn đặt '7' vào dấu ngoặc đơn như sau:' (7). <|:(_ > 3) ', vì trình biên dịch cố gắng gọi' <|: 'trên một' Double'' 7.' mà không có dấu ngoặc đơn, do đó dẫn đến một lệnh infix của '<|:' và dẫn trở lại kiểu vấn đề suy luận. – agilesteel