2012-12-08 13 views
5

Predef.any2stringadd ile ilgili sorun yaşıyorum ne yazık ki officially considered not a PITA. Bir tür sınıf yaklaşımıVapourise Predef.any2stringadd yorumlayıcıda

object Foo { 
    implicit def fooOps(f: Foo): Ops = new Ops(f) 
    final class Ops(f: Foo) { 
     def +(that: Foo): Foo = ??? 
    } 
} 
trait Foo 

için

trait Foo { 
    def +(that: Foo): Foo 
} 

benim API değişti Şimdi o korkunç yöntem böyle bir kod derlenmiş gizleyebilirsiniz:

import Predef.{any2stringadd => _} 

Ancak bu başarısız REPL/tercüman ortamımda.

val in = new IMain(settings, out) 
in.addImports("Predef.{any2stringadd => _}") // has no effect? 

Tercümana bu sinir bozucu yöntemi anlatması için nasıl söyleyebilirim?

object Foo { 
// implicit def fooOps(f: Foo): Ops = new Ops(f) 
    final class Ops(f: Foo) { 
     def +(that: Foo): Foo = ??? 
    } 
} 
trait Foo 
implicit def fooOps(f: Foo): Foo.Ops = new Foo.Ops(f) 

bilmiyorum iken:

cevap

1

bir geçici çözüm Foo 'ın arkadaşı nesnenin dışarı örtük dönüştürme almak ve (benim gerçek durumda paket nesnesi) üst hiyerarşide yerleştirmek gibi görünüyor Neden bunun bir fark yaratması gerektiğini biliyoruz, yorumcunun any2stringadd hakkında unutmasını sağlayacak kadar yeterli görünüyor.

(Yine de, yeni bir bilet de daha gereksiz hale getirecek Scala 2.10 o dize interpolasyon verilen bu yöntemi kaldırmak amacıyla açılmalıdır düşünüyorum.)