SORU
3 AĞUSTOS 2010, Salı


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
3 AĞUSTOS 2010, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FOSDEM

    FOSDEM

    13 Ocak 2009
  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • Sorikan

    Sorikan

    3 ŞUBAT 2008