Из того, что я понимаю, строки в Nim в основном являются изменяемой последовательностью байтов и что они копируются при назначении.Что такое струны в Ниме?
Учитывая, что я предположил, что sizeof
говорил мне (как len
) количество байт, но вместо этого он всегда дает 8
на моем 64-битной машине, так что, похоже, держит указатель.
Учитывая, что у меня есть следующие вопросы ...
Что было причиной копии на уступки? Это потому, что они изменяемы?
Есть ли время, когда оно не копируется при назначении? (Я предполагаю, что параметры не
var
не копируются. Что-нибудь еще?)Они оптимизированы так, что они на самом деле копируются только в том случае, если они мутированы?
Есть ли существенная разница между строкой и последовательностью или ответы на вышеуказанные вопросы одинаково применимы ко всем последовательностям?
Что-нибудь еще в целом стоит отметить?
Спасибо!
для полноты, жизнь определения NIM строки [на GitHub] (HTTPS: //github.com/Araq/Nim/blob/master/lib/system.nim#L56), который может помочь объяснить, почему он сообщает, что он сообщает. –
@ Mike'Pomax'Kamermans: Спасибо за ссылку, но я не знаю, что 'string * {.magic: String.}' Пытается сказать мне. ;-) –
Да, тоже не слишком уверен в себе, просто подумал, что может быть хорошей информацией, чтобы иметь в вопросе, как возможное преимущество для людей, чтобы лучше узнать, что случилось, чем мы =) –