quanto sia PTR e tampone sono puntatori a intero i dati, è sufficiente assegnare uno all'altro:
ptr: buffer
La sintassi :variable
è necessaria solo per ottenere il indirizzo di quelli che si chiamerebbero tipi "primitivi" in Java. Ciò equivale a byte !, intero !, float !, float32! e logica! nella versione corrente di Red/System. Senza il numero iniziale :
, il compilatore fornirà il valore memorizzato nella variabile.
Tutti gli altri tipi come c-string! e struct! (e quindi alias!) sono in realtà indicatori. Quindi il compilatore fornisce il loro valore quando vengono referenziati, che è un indirizzo di memoria.
Quando si fa riferimento una parola, il compilatore Rosso/System fornisce il valore memorizzato in esso:
print i ;; will print the value stored in i
Quando si utilizza un set di parole (una variabile con un :
aggiunto al nome), il compilatore memorizza un valore in esso:
i: 1 ;; stores 1 in variable i
Quando si utilizza un get-parola (una variabile con una :
inserita all'inizio del nome), il compilatore fornisce l'indirizzo della variabile.
int-ptr: :i ;; stores the address of i in int-ptr
fonte
2013-06-20 09:08:20
Nota che ':' NON è un * get "operatore" *. Non è affatto un operatore. Quindi non è possibile combinare i due punti per ottenere un get-of-get (':: buffer') né si può inserire uno spazio (': buffer'). Questo è legato al motivo per cui Rebol e Red sono molto diversi dalle altre lingue. Un indicatore ":" è un segnale che indica che il simbolo che stai decorando è "aromatizzato" come GET-WORD !. Nonostante la disponibilità di questi "sapori" (più di Lisp ha, di gran lunga) è ancora solo qualcosa che viene elaborato simbolicamente. Rebol/Red li processa in un modo che è vestito come una "normale" lingua, ma i tuoi dialetti possono fare altrimenti! – HostileFork