Sto imparando Scala come un progetto personale perché sono stufo della verbosità di Java. Mi piace molto di quello che vedo, ma mi chiedo se c'è un modo per in modo efficiente implementare alcuni semplici contratti sui metodi. Io non sono (necessariamente) dopo la piena DBC, ma c'è un modo per: -Scala - design semplice per contratto
indicano che un parametro o un campo di classe è necessario, vale a dire non può essere nullo. La cosa Option sembra indicare chiaramente se è presente un valore OPTIONAL, ma voglio specificare gli invarianti di classe (x è richiesto) e anche per specificare in modo succinto che è necessario un parametro. So che posso fare "if" per lanciare qualche tipo di eccezione, ma voglio una funzione linguistica per questo caso d'uso MOLTO comune. Mi piacciono le mie interfacce, non mi piace la programmazione difensiva.
E 'possibile definire succinti ed efficienti (runtime performance) tipi di intervallo, come "NonNegativeInt" - Voglio dire che un parametro è> = 0. O all'interno di un intervallo. PASCAL aveva questi tipi e li ho trovati eccellenti per comunicare l'intento. Questo è uno dei maggiori svantaggi di C, C++, Java, ecc. Quando dico succinto Intendo dire che voglio dichiarare una variabile di questo tipo con la stessa facilità di un normale int, non dover creare ogni singola istanza sul mucchio.
In realtà C e C++ ha int non negativo: ricerca "int unsigned" in google. –
FYI: http://www.pm.inf.ethz.ch/education/theses/student_docs/Rokas_Matulis/Rokas_Matulis_MA_report Il plugin del compilatore sviluppato funziona per 2.10.0, ma non l'abbiamo ancora rilasciato in alcun modo (ancora) perché è - essendo una tesi di laurea - non è davvero stabile. –
@ om-nom-nom. Si, sono d'accordo. E 'passato troppo tempo da quando ho fatto C/C++ ma è molto facile da eludere se ricordo. Ad ogni modo, il mio intento "reale" (mi dispiace) è stato quello di chiedere dei tipi numerici utili non solo NonNegativeInt. Un esempio sarebbe 'DegreesCentigrade', o qualsiasi altra cosa ** specifica per il dominio ** - maggiore sicurezza del tipo che mi è piaciuta in Pascal. –