'u nasıl kullanırım? in the API'u yeni buldum ve bir veya iki örneği görmek için iyi bir açıklama ile birlikte görmek istiyorum.Özellik scala.Proxy
cevap
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.
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
}
Bu temel olarak delegeleri oluşturmak için kullanılan makinelerdir? –
@JensSchauder, evet. – missingfaktor
Şu anda bu eklentinin aktif versiyonu autoproxy-lite: https://github.com/kevinwright/Autoproxy-Lite –