Da quello che ho capito, le stringhe in Nim sono fondamentalmente una sequenza mutabile di byte e che vengono copiate su incarico.Cosa sono esattamente le stringhe in Nim?
dato che, ho pensato che mi avrebbe detto sizeof
(come len
) il numero di byte, ma invece dà sempre 8
sulla mia macchina a 64 bit, così sembra essere in possesso di un puntatore.
Dato che, ho le seguenti domande ...
Qual è stata la motivazione dietro copia su incarico? È perché sono mutabili?
C'è mai un momento in cui non viene copiato quando viene assegnato? (Suppongo che i parametri di funzione non
var
non vengano copiati. AltroSono ottimizzati in modo tale da essere copiati solo se/quando vengono modificati?
C'è qualche differenza significativa tra una stringa e una sequenza, oppure le risposte alle domande precedenti possono essere ugualmente applicate a tutte le sequenze?
Qualcos'altro in generale degno di nota?
Grazie!
per completezza, le vite di definizione stringa NIM [su GitHub] (https: //github.com/Araq/Nim/blob/master/lib/system.nim#L56) che potrebbe aiutare a spiegare perché riporta ciò che riporta. –
@ Mike'Pomax'Kamermans: Grazie per il collegamento, ma non so cosa 'stringa * {.magic: String.}' Sta cercando di dirmi. ;-) –
sì, non sono troppo sicuro neanche io, ho pensato che potrebbe essere una buona informazione avere nella domanda come un possibile vantaggio per le persone a scoprire cosa c'è di meglio di noi =) –