2010-10-10 17 views

cevap

12

Vekil özelliği temsilci oluşturmak için yararlı bir temel temin etmektedir sadece Any (equals, hashCode ve toString) yöntemlerinin uygulanmasını sağlar. Herhangi bir ek yönlendirme yöntemini kendiniz uygulamak zorunda kalacaksınız. Vekil genellikle pimp-my-library pattern ile kullanılır:

class RichFoo(val self: Foo) extends Proxy { 
    def newMethod = "do something cool" 
} 

object RichFoo { 
    def apply(foo: Foo) = new RichFoo(foo) 
    implicit def foo2richFoo(foo: Foo): RichFoo = RichFoo(foo) 
    implicit def richFoo2foo(richFoo: RichFoo): Foo = richFoo.self 
} 

standart kütüphane de toplama vekiller (SeqProxy, SetProxy, MapProxy, vs) oluşturmak için yararlı olan özelliklerin kümesi içerir. Son olarak, yönlendirme yöntemlerini otomatik olarak uygulayan bir ölçekleyici eklentisi olan (AutoProxy plugin) derleyici eklentisi vardır. Ayrıca bkz. this question.

+1

Şu anda bu eklentinin aktif versiyonu autoproxy-lite: https://github.com/kevinwright/Autoproxy-Lite –

3

Bu işlev, Haskell'in newtype gibi işlevlerine ihtiyaç duyduğunuzda kullanacağınız görünüyor. Örneğin

aşağıdaki Haskell kod:

newtype Natural = MakeNatural Integer 
        deriving (Eq, Show) 

kabaca Scala kodu aşağıdakilere tekabül edebilir: ancak,

case class Natural(value: Int) extends Proxy { 
    def self = value 
} 
+0

Bu temel olarak delegeleri oluşturmak için kullanılan makinelerdir? –

+0

@JensSchauder, evet. – missingfaktor

İlgili konular