SORU
17 Ocak 2011, PAZARTESİ


Scala Dinamik bir tür pratik kullanımları

JVM dinamik diller ile entegrasyonu yanı sıra, Scala gibi Dynamic type bir statik olarak yazılan bir dil diğer güçlü kullanır?

CEVAP
17 Ocak 2011, PAZARTESİ


Dinamik bir tür özellikleri JRuby, Groovy veya diğer dinamik JVM dillerinde bulunan birçok dinamik metaprogramming ve method_missing gibi gerçekleştirmek için de kullanılabilir sanırım.

Arka planda örnek dinamik bir sorgu parametreleri ile bir yöntem adı bir SQL sorgu için tercüme nerede Raylar Aktif Kaydı, benzer oluşturmak için. Bu method_missing işlevselliği Ruby kullanıyor. Böyle bir şey (teoride böyle bir şey uygulamak için denemedim):

class Person(val id: Int) extends Dynamic {
  def _select_(name: String) = {
    val sql = "select "   name   " from Person where id = " id;
    // run sql and return result
  }

  def _invoke_(name: String)(args: Any*) = {
    val Pattern = "(findBy[a-zA-Z])".r
    val sql = name match {
      case Pattern(col) => "select * from Person where "   col   "='" args(0)   "'"
      case ...
    }
    // run sql and return result
  }
}

Yöntemleri çağırabilir yerde böyle bir kullanım, izin 'adı' ve 'findByName onlara açıkça İnsan sınıf: tanımlanan kalmadan

val person = new Person(1)

// select name from Person where id = 1
val name = person.name

// select * from Person where name = 'Bob'
val person2 = person.findByName("Bob")

Eğer dinamik metaprogramming eklenecek olsaydı, Dinamik türü çalışma zamanı sırasında eklenmiş olan yöntemleri yürütmesini sağlamak için gerekli olacaktır

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Droid Life

    Droid Life

    17 Kasım 2009
  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • sk8ingis4me

    sk8ingis4me

    16 Mart 2006