Вопрос: Можно ли импортировать MX-файл, сохраненный с помощью DumpSave
без оценки содержимого?
Проиллюстрирую:
Создадим переменную, data
:
In[2]:= data = Range[10]
Out[2]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Она может быть экспортирована в MX и импортирована из MX без каких-либо определений:
In[3]:= ImportString@ExportString[data, "MX"]
Out[3]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Но что если мы используем DumpSave
?
In[4]:= DumpSave["data.mx", data]
Out[4]= {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}
(И очистить data
)
In[5]:= Clear[data]
При повторном импорте ничего не возвращается:
In[6]:= Import["data.mx", {"MX", "HeldExpression"}]
Но переменная data
снова становится определенной, как если бы мы использовали Get
.
In[7]:= data
Out[7]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Я ожидал получить что-то вроде Hold[data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}]
, т.е. что-то похожее на то, что будет записано в файл .m
при использовании Save
.
Возможно, технически невозможно избежать создания определения, поскольку DumpSave
и Get
напрямую манипулируют состоянием ядра, а не пишут и читают оцениваемое определение, как это делает Save
? Это просто предположение.
(edit) please note: Я не пытаюсь сохранить таким образом, чтобы можно было импортировать "Held". Я уже могу сделать это, используя Export
. Я пытаюсь импортировать ранее DumpSave
d MX файлы вместо этого.
Ответ Похоже, что это невозможно сделать, если только MX-файл не был сохранен специально для этого.