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

  • calicoJake

    calicoJake

    29 EKİM 2007
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010