Scala'da yeni bir "vaka sınıfı" oluşturmak için "yeni" yi kullanmanızın gerekmemesinin nedeni nedir? Şimdi cevapsız bir süre aramayı denedim.Neden "vaka sınıfı" yeni bir nesne oluşturmak için "yeni" ye gerek duymuyor
cevap
Eğer nasıl veya neden ister misin? Diğer yanıt notları gibi, ,'un otomatik olarak oluşturulan tamamlayıcı nesnede nasıl yalnızca apply
yöntemidir. İçin
neden: vaka sınıfları genellikle Scala algebraic data types uygulamak için kullanılan ve new
-daha az yapıcı (a değer yaratmak örneğin daha desen eşleştirme yoluyla yapısökümünden benziyor) daha şık bir kod verir ve Diğer dillerde ADT sözdizimine daha çok benzemektedir.
Uygulama sınıfı, uygulanan apply()
ile önceden oluşturulmuş tamamlayıcı nesneye sahiptir. Birisi bile bu şikayet: How to override apply in a case class companion :)
Vaka sınıflar kurucular gibi kullanabilirsiniz bunların tamamlayıcı bir nesne üzerinde bir otomatik olarak oluşturulanapply
fonksiyon sağlamak.
object Person {
def apply(name: String, age: Integer): Person = new Person(name,age)
}
Örnek:
case class Person(name: String, age: Integer)
üçü de aynı şeyi yapmak aşağıdaki
Scala yılında bozulamaz bayt kodu aşağıdaki şekilde oluşturulanapply
fonksiyonunu bulacaksınız. Eğer
val p1 = Person("Frank", 23)
kullanırsanız val p0 = new Person("Frank", 23) // normal constructor
val p1 = Person("Frank", 23) // this uses apply
val p2 = Person.apply("Frank", 23) // using apply manually
Yani bir yapıcı, yöntemini uygulamak dediğimiz bu bir yöntem değildir.
Daha fazla bilgi için lütfen scala-object-apply-functions'u okuyun.
- 1. C# Dinamik derleme yeni bir nesne oluşturmak ve bana verilen türü için yeni bir nesne oluşturmak ve alana yüklemek çalışıyorum
- 2. Python - neden yeni bir nesne örneği oluşturmuyor?
- 3. yeni Nesne {} Java'da
- 4. C++ Yeni olmayan nesne
- 5. Neden bir COM arabiriminin yeni bir örneğini oluşturmak mümkün?
- 6. Python'daki her yeni nesne için neden 2 artar?
- 7. Bir vaka sınıfı için JsonWriter veya JsonFormat tipi sınıfı bulamıyor
- 8. Yeni Nesne, boş nesneyi döndürür
- 9. Yeni kayıtlar için bir boşluk oluşturmak için Html.EditorFor kullanma
- 10. Yeni bir tablo oluşturmak için createElement nasıl kullanılır?
- 11. scala vaka nesne kirliliği
- 12. Kişiler programında yeni bir grup oluşturmak istersiniz
- 13. Yeni
- 14. Neden varolanını kullanmak yerine bir işlev çağrısı yapmak için yeni bir nesne başvurusu oluşturmalıyım?
- 15. AngularJS $ resource, nesne güncelleştiriliyor yerine yeni bir nesne oluşturuluyor
- 16. Bir yürütülebilir dosya oluşturmak için neden bir nesne dosyası gerekli?
- 17. Yeni bir matris oluşturmak için matrisin bazı değerlerini değiştirin
- 18. SCNView, yeni bir çerçeve oluşturmak için nasıl zorlanır?
- 19. Bir vaka sınıfı kurucusu yeniden şekillendiriyor musunuz?
- 20. Nesne başvuruları yeni bir nesne oluşturulduktan sonra güncellenmiyor
- 21. ISO sınıfı oluşturmak için PHP sınıfı
- 22. DB veya yeni bir nesne için model nesnesi nasıl denetlenir?
- 23. Scala özelliğinde karıştırmak için yeni bir nesne mi oluşturmalıyım?
- 24. Tastypie obj_create - yeni oluşturulan nesne nasıl kullanılır?
- 25. Neden 'yeni Promise (...)' tekrar 'tanımlanmamış'?
- 26. Yeni StreamReader sınıfı dosya adını kabul etmiyor
- 27. Geçerli kullanıcı yeni Django sınıfı görünümleri formunda
- 28. Yeni nesneler eklemek için
- 29. Yansıma kullanarak yeni nesne oluşturulsun mu?
- 30. Sepet sınıfı nasıl yeni öğe eklenir?
Teşekkürler, bu benim aradığım şey :) –