Si prega di scusare il titolo divertente, sto usando in analogia con "zip bomb". È possibile creare un file sorgente di scala, che, una volta compilato, produrrà un numero elevato di file di classe (o un file di una sola classe molto grande)? C'è un modo in cui la dimensione dei file di classe potrebbe crescere più velocemente di quella lineare con le dimensioni del file sorgente?Scala bomba? (come una bomba a cerniera)
risposta
La specializzazione è intrinsecamente esponenziale nel numero di parametri di tipo specializzati.
class Huge[@specialized A, @specialized B, @specialized C](
val a: A, val b: B, val c: C
) {} // 730 files, 2.9 MB
class Gigantic[@specialized A, @specialized B, @specialized C, @specialized D](
val a: A, val b: B, val c: C, val d: D
) {} // 6562 files, 26 MB
pattern matching può coinvolgere anche un sacco di duplicazione del codice per i casi complessi (anche se trovo difficile prevedere esattamente quando ciò avverrà).
Ah, non ho mai usato la specializzazione, ottima risposta! –
Rex, per informazioni, c'è un bug sollevato per il pattern matching https://issues.scala-lang.org/browse/SI-1133, fallisce perché viene generato troppo codice. Questo dovrebbe essere risolto con il nuovo matcher di pattern virtuale in 2.10. –
- 1. Multiprocessing Bomba
- 2. Bomba a forcella in serie?
- 3. Binary Bomba - Fase 4
- 4. Come funziona questa bomba a forcella bash?
- 5. Come posso proteggermi da una bomba a zip?
- 6. Perché la bomba a forcella non si è schiantato su Android?
- 7. Come prevenire iniezione XML come XML Bomba e di attacco XXE
- 8. LINQ "cerniera" in String Array
- 9. stepping in cerniera con obiettivo `to`
- 10. implementazione Haskell di "cerniera" strano errore
- 11. Creazione di una coda a Scala
- 12. Scala: riferimento di ritorno a una funzione
- 13. Come trasporre una mappa con i valori dell'elenco a Scala
- 14. Come faccio a trasmettere una variabile in Scala?
- 15. Come si applica una scala a un `pennello` d3 v4.0?
- 16. Come gestire l'accesso concorrente a una collezione Scala?
- 17. Come convertire da java.util.Map a una mappa Scala
- 18. Come associare pattern a una classe nidificata in Scala?
- 19. Modifica asse di articolazione della cerniera tramite script in Unity
- 20. come passare una stringa * scala vararg a un metodo Java utilizzando Scala 2.8
- 21. Creazione della cartella compressa (con cerniera) usando Delphi
- 22. Come assegnare una scala di colori a una variabile in un grafico a dispersione 3D?
- 23. Maven che crea un assemblaggio con cerniera piatta
- 24. POS etichettatura a Scala
- 25. gamma String a Scala
- 26. Trait swap a Scala
- 27. scrittura letterale XML come parametro a Scala
- 28. Unimporting a Scala
- 29. Scala: riassegnazione a val
- 30. Animazione scala a scatti
Che diavolo potreste averne bisogno? –
@NikitaVolkov Sembra un esercizio mentale interessante, ma ho un problema nel cercare di trovare un'applicazione pratica. – Vatine
Ok, per coloro che hanno bisogno di applicazioni pratiche: provare a proteggere un servizio che compila il codice Scala dagli attacchi DOS. –