jeudi 2 avril 2015

What exactly are strings in Nim?

From what I understand, strings in Nim are basically a mutable sequence of bytes and that they are copied on assignment.


Given that, I assumed that sizeof would tell me (like len) the number of bytes, but instead it always gives 8 on my 64-bit machine, so it seems to be holding a pointer.


Given that, I have the following questions...




  • What was the motivation behind copy on assignment? Is it because they're mutable?




  • Is there ever a time when it isn't copied when assigned? (I assume non-var function parameters don't copy. Anything else?)




  • Are they optimized such that they only actually get copied if/when they're mutated?




  • Is there any significant difference between a string and a sequence, or can the answers to the above questions be equally applied to all sequences?




  • Anything else in general worth noting?




Thank you!


Aucun commentaire:

Enregistrer un commentaire