Paket nesneleri
Paket nesneleri, o kadar çok kavram ama kendi kullanım nedir?
Bir örnek çalışma için denedim ve bir işe ihtiyacım var sadece formu aşağıdaki gibidir
package object investigations {
val PackageObjectVal = "A package object val"
}
package investigations {
object PackageObjectTest {
def main(args: Array[String]) {
println("Referencing a package object val: " PackageObjectVal)
}
}
}
Yaptığım gözlemler şu ana kadar
package object _root_ { ... }
izin verilmeyen makul olan)
package object x.y { ... }
ayrıca devre dışı bırakılmış.
Paketi bir nesne hemen üst paket bildirilmesi gerekir gibi görünüyor ve eğer yukarıda yazıldığı gibi, brace sınırlandırılmış paket beyannamesi gereklidir.
Ortak kullanımda? Eğer öyleyse, nasıl?
CEVAP
Normalde denk geldiği paketin içinde ayrı bir dosya package.scala
adı verilen paket nesne koyabilirsiniz. Ayrıca iç içe geçmiş paket sözdizimi kullanabilirsiniz, ama bu oldukça sıradışı.
Paket nesneleri kullanmak için ana dava API kullandığınızda paketi dışında bir paket içinde çeşitli yerlerde tanımları ihtiyacınız olduğunda paketi ile tanımlanır. İşte bir örnek:
// file: foo/bar/package.scala
package foo
package object bar {
// package wide constants:
def BarVersionString = "1.0"
// or type aliases
type StringMap[ T] = Map[String,T]
// can be used to emulate a package wide import
// especially useful when wrapping a Java API
type DateTime = org.joda.time.DateTime
type JList[T] = java.util.List[T]
// Define implicits needed to effectively use your API:
implicit def a2b(a: A): B = // ...
}
Şimdi bu paketin içindeki tanımları bütün paketi içinde mevcuttur nesne foo.bar
. Ayrıca tanımları bu paket dışında biri foo.bar._
ithalat ithal.
API istemci ek ithalat kütüphane kullanma sorunu için ihtiyaç önleyebilirsiniz bu şekilde etkili bir şekilde - örneğin yazmak gerekir scala-salıncak
import swing._
import Swing._
Tuple2
onEDT
gibi iyilik ve örtülü dönüşüm 15 ** var.
Yeniden takmak Hazırda bulunan nesnele...
Bir şekilde Chrome Dev Tools nesneleri...
Derin klonlama nesneleri...
Nasıl Gıt nesneleri sabit disk hatası ...
Nasıl varsayılan sınıf bir paket almak...