преобразовать в строку в Maple 15 - PullRequest
0 голосов
/ 01 апреля 2012
convert(file.ext,string)

дает другой результат в зависимости от текущей используемой версии Maple.В Maple v14 выдает «file.ext», а в Maple v15 - «file. Ext» (с пробелами до и после точки).Кто-нибудь может мне это объяснить?Заранее спасибо.

1 Ответ

1 голос
/ 02 апреля 2012

Да, есть разница, но более важно то, что подход к формированию строки таким образом ошибочен.

Для команды convert нет специальных (отложенных) правил оценки, ито, что эта процедура видит в качестве первого аргумента здесь, является результатом (некоммутативного) умножения имени file на имя ext.И поэтому это не очень хороший способ объединить строку, потому что ее цель - не сначала тщательно объединить.

Существуют альтернативы.Вы можете объединить одно имя, а затем преобразовать его в строку или объединить непосредственно в строку (для которой команда convert / string не самая лучшая).

 # I'm supposing that one does want the name`file` assigned
 file:=myproject:

 # Now suppose that one wants the result "myproject.for"
 ext:=`for`:

 convert(file.ext,string); # whoops
                  "myproject . `for`"

 cat(file,".",ext); # produces the name `myproject.for`
                     myproject.for

 convert(%,string);
                    "myproject.for"

 sprintf("%a.%s",file,ext);
                    "myproject.for"
...