SORU
4 AĞUSTOS 2009, Salı


Scala harita için durum sınıfı

Eğer Scala durumda bir sınıf örneği, örneğin dönüştürmek iyi bir yolu varsa çok iyi biliyor

case class MyClass(param1: String, param2: String)
val x = MyClass("hello", "world")

Bir tür, örneğin bir eşleme içine

getCCParams(x) returns "param1" -> "hi", "param2" -> "3"

Herhangi bir durum için birinci sınıf değil, sadece önceden tanımlanmış olanlar çalışır. Dava sınıfı adı temel Ürün sınıfı sorguluyor bir yöntem yazarak, örneğin indirebiliriz buldum

def getCCName(caseobj: Product) = caseobj.productPrefix 
getCCName(x) returns "MyClass"

Dava sınıfı alanlar için benzer bir çözüm ama iş arıyorum. Bir çözüm Java yansıma kullanmak zorunda diye tahmin ediyorum, ama eğer durum sınıfların temel uygulama değişirse, Scala, gelecekteki bir sürüm zorla bir şey yazmak istemem.

Şu anda Scala bir sunucu üzerinde çalışan ve protokolü ve tüm mesajlar ve istisnalar bu kadar güzel, kısa ve öz olarak durum sınıfları kullanarak, bu tanımlama için inşa ediyorum. Ama ben daha sonra herhangi bir istemci uygulaması için ileti katmanı kullanmak için göndermek için bir Java göster dönüştürülmeleri gerekiyor. Benim şu anki uygulaması her olayı sınıf için ayrı bir çeviri tanımlar, ama genel bir çözüm bulmak için iyi olurdu.

CEVAP
4 AĞUSTOS 2009, Salı


Bu çalışması gerekir:

def getCCParams(cc: AnyRef) =
  (Map[String, Any]() /: cc.getClass.getDeclaredFields) {(a, f) =>
    f.setAccessible(true)
    a   (f.getName -> f.get(cc))
  }

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011
  • WK

    WK

    9 Ocak 2006