2015-08-18 29 views

cevap

44

Bir vaka sınıfı argüman alabilir, bu nedenle bu vaka sınıfının her bir örneği, argümanlarının değerlerine göre farklı olabilir. Öte yandan, bir vaka nesnesi yapıcıda args almaz, bu yüzden sadece bir örneği olabilir (bir tekil, object düzenli bir scala gibi).

Aktörünüze verilen mesajın herhangi bir değer farklılaştırmasına ihtiyacı yoksa, bir durum nesnesi kullanın. Eğer dışarıdan bir bazı işler yaptık aktör, ve seni olsaydı Örneğin, o zaman belki böyle bir şey yapmak istiyorum, işi yapmak için bunu söylemek istedim:

case object DoWork 

... 

def receive = { 
    case DoWork => 
    //do some work here 
} 

Ama bazı istiyorsa işin nasıl varyasyon, bunu böyle mesajınızı yeniden tanımlamak gerekebilir: basit ifadeyle

case class DoWorkAfter(waitTime:Long) 

... 

def receive = { 
    case class DoWorkAfter(time) => 
    context.system.scheduler.scheduleOnce(time.milliseconds, self, DoWork) 

    case DoWork => 
    //do some work here 
} 
6

Bir vaka nesnesi, bir singleton sınıftır. Onlar benzer numaralandırma değerleri kullanılır. Sadece başka bir değer gibi desen eşleştirme kullanılabilir:

TaxCalculationTimeout match { 
    case TaxCalculationTimeout => println("hello") 
} 

bir vaka sınıfını tanımlamak

, o sınıfın örnekleri için bir şablon yaratıyor. TotalTaxResult(1.0) ve TotalTaxResult(2.0), aynı türden iki farklı değerdir. Oysa tam olarak bir TaxCalculationTimeout değeri var.

2

, Scala Object Oriented ve Fonksiyonel programlama dilidir. Saf nesne yönelimli metodoloji ile desen uyumu gibi fonksiyonel programlama özelliklerine sahiptir.

Bazı zamanlar, desen eşleşmesi için bazı sinyalleri iletme gibi herhangi bir değeri olmayan tekil nesne oluşturmamız gerekir. Scala'nın case nesnesi kavramı yoksa, enum'u kullanmamız veya eşleşmede bazı dize değerlerine eşit olmamız gerekir. Ancak bu, nesne yönelimli bir dilde okunabilirlik değil. Bu senaryoda, Case Object'i kullanıyoruz.

Farklı senaryolarda birden fazla nesne oluşturmamız gerektiğinde vaka sınıfları kullanılır.

2

Bu ikisini genel olarak bir sınıf ve bir nesne gibi düşünebilirsiniz. Bir ClassName sınıfı (sınıflandırma listesi) yaptığınızda, nesne oluşturmak için bir plan oluşturur ve vaka nesnesi, bildirildiği kapsamdaki bir tekil nesneyi tanımlar. Scala 2.10 ile başlayarak her zaman argüman içermeyen vaka sınıfları yerine vaka nesneleri kullanmalısınız. Bu yüzden argümanlara ihtiyaç duyan bazı değerler üzerinde bir kalıp eşleşmesi yapmak istediğinizde, bir vaka sınıfı için gitmelisiniz, ancak değerleriniz argüman almazsa, bir vaka nesnesi kullanmalısınız.

İlgili konular