나는 몇 가지 방법이 암시 적 매개 변수를 복용 클래스를 정의하기 위해 노력하고있어 : 내가 다른 클래스에서이 클래스를 사용어떻게 클래스 수준에서 암시 적 매개 변수에 대한 기본값을 제공하는
object Greetings {
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
을
implicit val greetings = "hello" //> greetings : java.lang.String = hello
Greetings.say("loic") //> res0: String = hello loic
Greetings.say("loic")("hi") //> res1: String = hi loic
내 문제는 내 인사말 개체 외부에 암시적인 val을 정의 할 때만 작동한다는 것입니다. 스칼라 컬렉션 API와 같은 내 API를 더 쉽게 사용할 수 있도록 암시 적 매개 변수와 클래스에 기본값이있는 메서드를 제공하고 싶습니다.
그래서이 일을하고자하지만 (암시 적 값을 찾을 수 없음) 작동하지 않습니다 :
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
다음
Greetings.say("loic")
Greetings.say("loic")("hi")
을 내가 (implicit greetings: String = "hello")
로 디폴트 값을 정의 할 수 있습니다 알고 있지만 나는 여러 가지 방법이 있다면 반복하지 않으려 고 클래스 수준에서하고 싶습니다.
CanBuildFrom
이 List
클래스 내에서 정의 된 것을 보았 기 때문에 뭔가 놓친 것 같습니다. 이처럼
class Greetings(implicit val greetings: String = "hello") {
def say(name: String): String = greetings + " " + name
}
내가 기본값을 가지고 있고 원하는 경우를 재정의 할 수 있습니다 :
그렇지 이상하다, 암시 만 일반 매개 변수에 두 번째 삽입되기 때문이다. 일반적으로 클래스는'class Greetings() (implicit val ...) '처럼 보일 것입니다. – thatsIch