Ben mevcut türlerine yeni fonksiyonlar eklemek çalışıyorum trait için. Bunu yapmak için örtük sınıfları ve örtülü dönüşümleri araştırdım ve her ikisi de aynı davranışı sunuyor gibi görünüyor. örtük dönüştürmeÖrtülü sınıf (Ben <code>Future[Option[A]]</code> örneğin üzerinde kontrol yok türleri için ilgili fonksiyonları önermek yüzden IDE otomatik olabilir)
case class Foo(a: Int)
implicit class EnrichedFoo(foo: Foo) {
def beep = "boop"
}
Foo(1).beep // "boop"
Ve kullanarak:
case class Foo(a: Int)
trait Enriched {
def beep: String
}
implicit def fooToEnriched(foo: Foo) = new Enriched {
def beep = "boop"
}
Foo(1).beep // "boop"
Burada tek fark ilk örnek bir bir- yarattığını olabilir varsayalım
örtük sınıfını kullanarak arasında herhangi bir fark var mı etkili bir özellik yerine sınıf dışında, ancak örtük sınıfı soyut bir özelliği genişletmek için kolayca uyarlayabilirim, örneğin:
case class Foo(a: Int)
trait Enriched {
def beep: String
}
implicit class EnrichedFoo(foo: Foo) extends Enriched {
def beep = "boop"
}
Foo(1).beep // "boop"
ek bir şey örtük B * 'nihai class' *, bir' örtülü def' tek seçenek olduğunu tip B, bir nesneye tip A'nın bir nesneyi dönüştürmek istediğinizde, olmasıdır. – Adowrath