Domanda

Ho appena attraversatohttp://frankniemeyer.blogspot.com/2010/04/minimalistic-native-64-bit-array.htmlChe contiene la linea

(# "sizeof !0" type('T) : nativeint #)

Credo che la frase tecnica sia "Che diamine?" Non ho mai nei miei (~ 8 mesi) di programmazione F# attraversare qualcosa anche simile a quello ...

FSI mi dice qualcosa sui costrutti deprecati, usati solo per le libs ...

E Google con (# fa ... beh, non molto

Qualche direzione in questo?

È stato utile?

Soluzione

Questa è la notazione per l'emissione di IL in linea. Era una caratteristica più importante durante gli anni precedenti di F#, ma è stata deprecata. Un gentiluomo di nome Brian del team F# ha indicato che è attualmente utilizzato principalmente per bootstrap il compilatore F# e che il team aveva intenzione di contrassegnare questo costrutto come un errore, non solo un avvertimento.

Vedere il suo post qui Per la storia completa.

Altri suggerimenti

È in linea il codice IL (lingua intermedia). Questo costrutto è utilizzato internamente dal team F# per implementare bit della biblioteca F# Core non puoi fare in nessun altro modo. Questo codice ammetterà un avvertimento che dice che non dovrebbe essere usato in alcun modo se non dalle librerie F# Core, quindi probabilmente non devi preoccuparti troppo in quanto non dovrebbe mai apparire nel codice di produzione.

Affascinante. Ma penso che F# ci dia già le operazioni di conversione (per questa particolare operazione!) È necessario senza ricorrere a IL.

[<Unverifiable>]
let inline ArrayOffset (itemSize:int64) (length:int64) (start:int64) (idx:int64) = 
    if idx < 0L || idx >= length then raise(IndexOutOfRangeException())
    NativePtr.ofNativeInt(nativeint(start + (idx * itemSize)))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top