Tôi muốn có hàm bậc cao hơn trong tham số một hàm chấp nhận tham số ngầm định cụ thể.Loại hàm có tham số Implicit trong Scala
Để chính xác hơn, tôi đang cố gắng tạo một hàm cần có phương thức tạo Future
phụ thuộc vào ngữ cảnh ngầm và trả về một phương thức không phụ thuộc vào ngữ cảnh.
Để cụ thể hơn, chúng ta hãy nói rằng tôi có một cái gì đó như thế này:
def foo(a: Int)(implicit ctx: ExecutionContext): Future[Float] = future { somelongBar... }
Tôi muốn có một phương pháp như thế này:
def provideCtx[A](func: ExecutionContext => A): A = {
val ctx = setupCtx
func(ctx)
}
nhưng nếu tôi gọi provideCtx(foo)
, các trình biên dịch phàn nàn về bối cảnh thực thi ngầm thiếu.
Thực tế là tôi đang xử lý với một ExecutionContext không phải là rất quan trọng. Những gì tôi muốn tìm là làm thế nào để viết kiểu tham số để chấp nhận một hàm với một đối số ngầm định của một kiểu cụ thể. Tôi hiểu rằng phần ngầm định là một đối số được nghiền, để thực tế tôi có một chức năng như vậy: ExecutionContext => Int => Future[Float]
và tôi khá chắc chắn rằng khi chạy, jvm không biết rằng ExecutionContext là ngầm, nhưng tôi không thể làm cho trình biên dịch hiểu điều đó.
thực sự, tôi đã kết thúc viết một cái gì đó rất giống nhau ngay bây giờ, nó chỉ là một chút cồng kềnh. – Mortimer