Sono interessato a conoscere il set completo di alternative al polimorfismo del sottotipo in scala.Quali sono le alternative al polimorfismo del sottotipo in scala?
risposta
Gli strumenti di base per conseguire il polimorfismo statico-controllabile in Scala sono
- Sottotipizzazione (bog-standard OO polimorfismo)
- Tipo parametrizzazione (permette varianza polimorfica e vincoli)
- Self-tipizzazione (consente la restrizione e la specializzazione del polimorfismo OO)
- Conversione implicita (consente costruzione polimorfica post-facto)
- Digitazione strutturale (consente poly morphism sulla base di caratteristiche, piuttosto che tipo)
- tipo limiti generali (permettendo vincoli estremamente precise su polimorfismo permesso)
- pattern matching (permette polimorfismo sulla base di struttura di dati, simili ai tipi di dati astratti) tipi
- Higher-kinded (permettendo polimorfismo su costruzioni polimorfiche)
Chiamare tutte queste "alternative" è probabilmente la parola sbagliata, dal momento che sono così ben integrate. Non è raro che alcuni algoritmi polimorfici vengano espressi utilizzando diversi di questi strumenti insieme.
Vale anche la pena di notare il posto delle incomprensioni nel polimorfismo di Scala. Per le comprensioni non sembra particolarmente polimorfico. Sotto la superficie, le incomprensioni sono solo zucchero sintattico per le chiamate a filtro/mappa/flatMap e le implementazioni di questi metodi tendono ad essere altamente polimorfiche. Pertanto, ciò che sembra essere relativamente semplice per i loop può provocare effetti polimorfici davvero impressionanti.
- 1. Esistono alternative al polimorfismo in C++?
- 2. Quali sono le alternative alla VM Java?
- 3. Quali sono le migliori alternative a Lucene?
- 4. Quali sono le alternative a DataGridView?
- 5. Quali alternative ci sono al client di test WCF?
- 6. Quali sono le alternative a Domain Driven Design in MVC
- 7. Alternative all'uso del polimorfismo in Ruby on Rails
- 8. Quali sono le eccezioni standard di Scala?
- 9. Quali sono le alternative per aggiornare automaticamente un'applicazione Java Swing?
- 10. Quali sono le migliori caratteristiche di Scala?
- 11. Quali sono le alternative per i pulsanti di opzione?
- 12. Quali sono alternative al driver JDBC per l'accesso al database PostgreSQL
- 13. Quali sono le alternative a find_by_sql per query computazionali pesanti?
- 14. Quali sono le alternative al rapportatore per i test e2e in AngularJS?
- 15. Quali sono le alternative più aggraziate alle interfacce costanti?
- 16. Quali sono le alternative alle implementazioni OpenSplice e RTI DDS?
- 17. Quali sono alcune alternative di pagerank?
- 18. Quali sono le alternative a Ruby Version Manager (rvm)?
- 19. Quali sono le alternative a ZeroMQ per lo spostamento dei payload del buffer del protocollo?
- 20. Quali sono alcune buone alternative a InstallShield?
- 21. Quali sono alcune alternative a PlayN?
- 22. Quali alternative Visio per Mac ci sono?
- 23. Go-Scala-Go! Quali sono le principali differenze?
- 24. Quali sono le differenze tra Int e Integer in Scala?
- 25. Sottotipo e parametri di tipo in Scala
- 26. Quali sono alcune buone alternative all'ereditarietà multipla in .NET?
- 27. Quali sono le caratteristiche del codice spaghetti?
- 28. Quali sono i plugin del compilatore di scala?
- 29. Tipi di impressioni rispetto al vecchio sottotipo vecchio
- 30. Quali sono le monadi Scala standard diverse da Opzione?
Probabilmente è più accurato descrivere la tipizzazione strutturale come "basata sulle caratteristiche del valore" rispetto a "comportamento [del valore]", poiché il comportamento è una proprietà opaca dal punto di vista del sistema di tipi. –
Mi manca il "supporto per i tipi più elevati" nella tua lista, che è una delle caratteristiche più potenti di Scala. Penso che il miglior riferimento sia ancora il lavoro di Adrian Moors: http://people.cs.kuleuven.be/~adriaan.moors/files/higher.pdf – Landei
Commenti eccellenti. La modifica. –