Estoy explorando el lenguaje Scala. Una afirmación que a menudo escucho es que Scala tiene un sistema de tipo más fuerte que Java. Por esto creo que lo que la gente quiere decir es que:Ventajas del sistema de tipo de Scala
scalac
rechaza ciertos programas con errores, quejavac
compilará felizmente, sólo para causar un error de ejecución.- Ciertas invariantes se pueden codificar en un programa Scala de modo que el compilador no permita que el programador escriba código que viole la condición.
¿Estoy en lo cierto al pensar en eso? Si es así, señale artículos/blogs/documentos que ilustren dichos ejemplos.
Java no le permitirá compilar "programas con errores" más de lo que lo hace Scala; sin embargo, Scala * permite * muchas más construcciones para ser expresadas [de manera segura], y generalmente en un método mucho más fácil, que Java. Sin embargo, Scala aún "sufre" de borrado de tipo. –
@pst: Sí, lo hará. 'String [] strings = {" foo "}; Objetos [] objetos = cadenas; objects [0] = new Object(); 'se compilará muy bien en java y luego lanzará un NPE en tiempo de ejecución. El código scala equivalente no se compilará. – sepp2k
@ sepp2k Creo que se trata de una 'ArrayStoreException' que se lanza, no una NPE. –