bazı yöntemler örtülü bir parametre alarak bir sınıf tanımlamak çalışıyorum: Başka bir sınıftan bu sınıfı kullanmaknasıl sınıf düzeyinde örtülü parametreler için varsayılan değer sağlamak üzere
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
Sorunum, yalnızca Greetings nesnesinin dışındaki örtük değeri tanımladığımda çalışır. API'm (Scala toplama API'sı gibi) kullanımını kolaylaştırmak için sınıfımın içinde varsayılan bir değer olan örtülü parametreler içeren yöntemler sağlamak istiyorum.
yüzden bunu yapmak istiyorum ama (örtük değer bulunamadı) çalışmıyor:
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
ve sonra
Greetings.say("loic")
Greetings.say("loic")("hi")
ben (implicit greetings: String = "hello")
ile varsayılan bir değer tanımlayabilirsiniz biliyorum ama Birçok yöntem varsa tekrarlamayı önlemek için sınıf düzeyinde yapmak istiyorum.
Sanırım bir şey kaçırıyordum, çünküsınıfının içinde CanBuildFrom
tanımlandığını gördüm. Bunun gibi
class Greetings(implicit val greetings: String = "hello") {
def say(name: String): String = greetings + " " + name
}
Ben bir varsayılan değere sahip ve ben istersem geçersiz kılabilirsiniz:
Değil tuhaf, örtük sadece normal parametreler ikinci eklenecektir beri. Normalde sınıfınız 'Sınıf Greetings() (örtük val ...) ' – thatsIch