Вопрос: Можно ли импортировать файл MX, сохраненный с использованием DumpSave
, без оценки содержимого?
Позвольте мне проиллюстрировать:
Давайте создадим переменную, data
:
In[2]:= data = Range[10]
Out[2]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Она может быть экспортирована и импортирована из 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
делает?Это всего лишь предположение.
(редактировать), пожалуйста, обратите внимание: Я не пытаюсь сохранить таким способом, который можно импортировать "Задержано".Я уже могу сделать это, используя Export
.Я пытаюсь импортировать ранее DumpSave
d MX-файлы.
Ответ Похоже, что это невозможно сделать, если MX-файл не был сохранен, чтобы разрешить его.