Sayım S # sınıfının Scaladoc'unda, şunu okuyabilirim: "Değer türünü uygulayan bir sınıf. Bu sınıf, numaralandırmanın adlandırma ve tamsayı tanımlama davranışını değiştirmek için geçersiz kılınabilir." Şaşkınım: Bir sınıfı nasıl geçersiz kılabilirim? override class Val extends super.Val
gibi şeylere izin verilmez.Scala'da bir iç sınıf nasıl "geçersiz kılınır"?
cevap
Scala'da (henüz) sanal sınıf yok, bu nedenle override class Val ...
yazamazsınız ve sonra new Val
çağrısının yeni örnek için doğru sınıfı dinamik olarak seçeceğinden emin olun. Bunun yerine, sınıfın, başvurulan sınıfın örneğine (bu durumda, Enumeration
) dayalı olarak seçileceği sınıftır.
Sanal sınıfları taklit etmenin genel yolu, class Val extends super.Val
yazıp, sonra da sınıfın örnekleri için fabrika olarak çalışan korumalı bir yöntemi geçersiz kılmaktır. Bu durumda, ayrıca yöntemi geçersiz olurdu:
protected def Value(i: Int, name: String): Value = new Val(i, name)
Enumeration
sadece bu fabrikada yöntemi kullanarak Val
örneklerini oluşturur. Genel olarak, bu kalıp programcının parçası üzerinde disiplin gerektirir, ancak kurucuları özel ilan ederek, programcıyı fabrika yöntemini kullanmaya zorlayarak sağlanabilir.
Açıklama için teşekkürler. Şimdi, son bir yöntemi geçersiz kılmaya nasıl devam ettiğimi merak ediyorum ... –
Hm ... haklısın .. bunu kontrol edeyim. – axel22
(Diğer okuyucular için bir açıklama olarak: bahsettiğiniz yöntem aslında Enumeration.scala'da son şeklindedir.) Bu arada, "Scala'da henüz sanal sınıflar yok" yazdınız. Gelecekte ortaya çıkabilecek herhangi bir kanıt var mı? –
- 1. Backbone.sync nasıl geçersiz kılınır?
- 2. Moose :: Rolünde bir alt nasıl geçersiz kılınır?
- 3. Alt sınıf yöntemleri alt sınıf argümanlarla geçersiz kılınır mı?
- 4. CursorAdapter nasıl geçersiz kılınır bindView
- 5. Phoenix'teki hatalar nasıl geçersiz kılınır?
- 6. Yöntem düzeyinde "ValidateAntiforgerToken" nasıl geçersiz kılınır?
- 7. Ebeveyn sınıfındaki bir alan nasıl geçersiz kılınır
- 8. Django'daki bir uygulama nasıl geçersiz kılınır?
- 9. Başka bir denetleyicide @RequestMapping nasıl geçersiz kılınır?
- 10. .NET'te uzantı yöntemleri nasıl "geçersiz kılınır"?
- 11. Nasıl geçersiz kılınır: has_many'de tanımlanan sipariş
- 12. JQuery TimeOut işlevi nasıl durdurulur/geçersiz kılınır?
- 13. Test sırasında log4j.properties nasıl geçersiz kılınır?
- 14. Eklentilerin denetleyici eylemleri nasıl genişletilir/geçersiz kılınır?
- 15. Safari'de ctrl-f nasıl geçersiz kılınır?
- 16. Ivy'nin Önbelleği'nin konumu nasıl geçersiz kılınır?
- 17. Simplicite'de ağaç görünümündeki etiketler nasıl geçersiz kılınır?
- 18. İletki testlerinde yeni Tarih() nasıl geçersiz kılınır
- 19. Wordpress işlevi nasıl geçersiz kılınır get_order_report_data wc_admin_report
- 20. Parola değiştirmede hata iletileri nasıl geçersiz kılınır
- 21. Yerel sosyalite sağlayıcısı nasıl geçersiz kılınır?
- 22. Scala'da Trait değişkeninde bir değişken değişken nasıl geçersiz kılınır?
- 23. Bir prototipte tanımlanmış (get-) özelliği nasıl "geçersiz kılınır"?
- 24. Ckeditor'da bir düğme için işleyici nasıl geçersiz kılınır?
- 25. reloadRowsAtIndexPaths: withRowAnimation nasıl düzgün bir şekilde geçersiz kılınır?
- 26. SPMetal: “Ad Adı” yerine iç adı kullanmak için nasıl geçersiz kılınır
- 27. Google Maps yakınlaştır, bir kml dosyası kullanırken geçersiz kılınır
- 28. Bu bir İç Sınıf mı
- 29. IDictionary küçük duyarlılığını nasıl geçersiz kılınır <string, string>
- 30. Node.js/Express.js - Res.render işlevi nasıl geçersiz kılınır/durdurulur?
İç bir sınıfı tanımlamak mümkündür, örn. 'Nesne MyEnum' Enumeration 'nesnesini şöyle bir şekilde genişletir: 'class Val (i: Int, name: String) super.Val (i, name)' yi genişletir, ancak numaralandırılmadığı için Numaralandırma # Val'i neredeyse geçersiz kılar. herşey. –