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

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012
  • Vsauce

    Vsauce

    30 Temmuz 2007