4 ms·
Basically, but it requires no extra syntax. `var some_seq = @[1, 2, 3, 4]` is a stack-managed sequence. That's all there is to it. There's no unwrapping any poi
by netbioserror 3y ago
Basically, but it requires no extra syntax. `var some_seq = @[1, 2, 3, 4]` is a stack-managed sequence. That's all there is to it. There's no unwrapping any pointers or boxes or what-not, the type is just `seq[int]`. Put another way, things that have become best practice in C++ are default in Nim with no syntactic noise.
- CyberDildonics 3y agoThere's no unwrapping any pointers or boxes or what-not That doesn't happen by default in C++ either. std::vector<int> some_seq{1, 2, 3, 4, 5, 7};
- jcelerier 3y agoor even just std::vector some_seq{1, 2, 3, 4, 5, 7}; nowadays (for a value of nowadays that is 5 years old for GCC and 6 years old for Clang)
- seertaak 3y agoIndeed there's no question that Nim is basically following C++'s lead on this. Nim iirc always had constructors and destructors. Final piece of the puzzle is move semantics, and I recall a blog post where Araq came up with something very similar.
- shirleyquirk 3y agoyes, Nim has move semantics, but takes care of you more than c++ does. for example, if you use an object that was previously moved, you dont get garbage, the compiler turns the first move into a copy (and tells you) the relevant docs are here: https://nim-lang.org/docs/destructors.html https://nim-lang.org/docs/destructors.html