Un po' di storia: Sono su Mac OSX Lion (64 bit, ovviamente) e sono un lungo periodo di tempo sviluppatore Java interessati a saperne di D.D tipo automatico degli errori (64 emissione po '?)
ho preso un copia di The D Programming Language e sono confuso su alcune cose. In primo luogo, se provo qualcosa di simile a quanto segue (direttamente dal libro):
int[] months = new int[12];
foreach (i, ref month; months) {
month = i + 1;
}
ottengo il seguente errore:
Error: cannot implicitly convert expression (i + 1LU) of type ulong to int
Questa è fissato cambiando i
-int i
.
Penso che questo sia perché il tipo automatico per i numeri su una piattaforma a 64 bit è ulong
e quindi l'inferenza di tipo non funziona.
ora ho il seguente problema:
bool binarySearch(T)(T[] input, T value) {
// ...
int i = input.length/2;
// ...
}
che restituisce il seguente errore di compilazione:
Error: cannot implicitly convert expression (input.length/2LU) of type ulong to int
Casting consente la correzione, ma io non preferisco. Ottengo anche altri errori stupidi relativi all'ottenimento di valori long
dai calcoli e quindi non essere in grado di usarli per l'indicizzazione negli array. Il supporto a 64 bit di D'è ancora in sospeso? Cosa posso fare per evitare problemi in futuro durante l'apprendimento di D? Avendo utilizzare in modo esplicito calchi e tipi in tutto il mondo sembra essere il contrario di quello che mi ha attratto la lingua in primo luogo ...
Nota: Questo è solo "sciocco", perché non è stato utilizzato C, e in Java, il codice architettura indipendente in realtà non esiste. Quindi sei obbligato a usare numeri interi a 32 bit o interi a 64 bit in Java per indicizzare un array, mentre in C (e D), dovresti usare 'size_t' quando indicizzi un array. Ciò rende il tuo codice molto più corretto (e indipendente dalla piattaforma), anche se, naturalmente, D gestisce questa digitazione per te. (Sia in C che in D, 'size_t' è quasi sempre automaticamente alias sia per un intero a 32 bit senza segno che per un 64-bit senza segno, motivo per cui vedi uno di quei nomi invece di' size_t'.) – Mehrdad