2012-04-01 10 views
0
convert(file.ext,string) 

gibt ein anderes Ergebnis abhängig von der aktuellen Maple-Version in Verwendung. In Maple v14 gibt es "file.ext", aber in Maple v15 gibt "file. Ext" (mit Leerzeichen vor und nach dem Punkt). Kann mir das jemand erklären? Danke im Voraus.konvertieren in string in Maple 15

Antwort

1

Ja, es gibt einen Unterschied, aber wichtiger ist, dass der Ansatz zur Bildung der Zeichenfolge auf diese Weise fehlgeleitet ist.

Es gibt keine speziellen (verzögert) Bewertungsregeln für den Befehl convert, und was das Routine sieht als erstes Argument hier ist das Ergebnis der (noncommutating) Multiplikation des Namen file mit dem Namen ext. Und so ist das nicht wirklich eine gute Art, zu einer Zeichenkette zu verketten, denn es ist nicht der Zweck, sie zuerst sorgfältig zu verketten.

Es gibt Alternativen. Sie könnten mit einem einzelnen Namen verketten und diesen dann in eine Zeichenfolge konvertieren, oder Sie könnten direkt mit einer Zeichenfolge verketten (für die der Befehl convert/string nicht optimal ist).

# 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"