2.9

2011-05-19 14 views
8

Selamlar,2.9

nasıl Foo kurucusu sadece bu paket (birim test + refakatçi nesne) için görünür yapabilirsiniz?

bu 2 dosyaların dışında Foo örneğini edebilmek istemiyorum

...

Foo.scala

package project.foo 

class Foo(val value: String) 

object Foo { 
    def generate: Foo = new Foo("test") 
} 

FooSpec.scala

package project.foo 

import org.spec2.mutable._ 

class FooSpec extends Specification { 
    "Foo" should { 
    "be constructed with a string" { 
     val foo = new Foo("test") 
     foo.value must be "test" 
    } 
    } 
} 

Kullanıyorum: Scala 2.9

+0

Bu arada, bir kurucu çağrısından döndürülen değer hiçbir zaman "boş" değil. Dize yapıcınız eksikse, derlenmez. Herhangi bir nedenle (tam yığın, vb.) Nesne yaratılamazsa, bir istisna atılır. –

+0

@ Jean-Philippe Pellet: Elbette! Bunu biliyorum, sadece örnek için –

+1

Tamam, sadece diğer insanların (bunu bilmiyor olabilir) kodunuzu yanlış yorumlamıyor emin oldum. –

cevap

16

bu deneyin:

package project.foo 
class Foo private[foo] (value: String) 

Sonra Foo yapıcısı foo paketinden sadece erişilebilir.

Scala'nın görünebilirliği hakkında daha fazla bilgi edinebilirsiniz (özellikle kapsamlandırılmış özel ve kapsam dahilinde korunanlara bakın) here.

+0

Fantastik :) çok teşekkürler Jean-Philippe –

İlgili konular