Tôi đang cố gắng để xác định một lớp học với một số phương pháp dùng một tham số ngầm:Làm thế nào để mang lại giá trị mặc định cho các thông số ngầm ở cấp lớp
object Greetings {
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
tôi sử dụng lớp này từ một lớp khác
implicit val greetings = "hello" //> greetings : java.lang.String = hello
Greetings.say("loic") //> res0: String = hello loic
Greetings.say("loic")("hi") //> res1: String = hi loic
Vấn đề của tôi là nó hoạt động chỉ khi tôi xác định val tiềm ẩn bên ngoài đối tượng Greetings của tôi. Tôi muốn có thể cung cấp các phương thức với các tham số ngầm, với một giá trị mặc định bên trong lớp của tôi, để làm cho việc sử dụng API của tôi dễ dàng hơn (như API thu thập Scala).
Vì vậy, tôi muốn làm điều này, nhưng nó không làm việc (không tìm thấy giá trị tiềm ẩn):
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
và sau đó
Greetings.say("loic")
Greetings.say("loic")("hi")
Tôi biết tôi có thể xác định một giá trị mặc định với (implicit greetings: String = "hello")
nhưng Tôi muốn làm điều đó ở cấp lớp, để tránh lặp lại nếu có nhiều phương pháp.
Tôi đoán tôi thiếu điều gì đó vì tôi thấy rằng CanBuildFrom
được định nghĩa bên trong lớp List
, chẳng hạn.
Nó không phải là lạ, vì tiềm ẩn sẽ chỉ được chèn vào thứ hai để các thông số bình thường. Thông thường lớp học của bạn sẽ trông giống như 'class Greetings() (ngụ ý val ...)' – thatsIch